【问题标题】:is it possible to unite several async social button loaders into one?是否可以将多个异步社交按钮加载器合并为一个?
【发布时间】:2011-10-03 12:28:37
【问题描述】:

到目前为止,我在页面末尾有这 3 个社交按钮。我在想将相同的函数重写 3 次并不是很聪明。我可以团结他们吗?它会工作吗?

任何想法如何做到这一点?从逻辑上讲,我会这样做: g.src = 'http://apis.google.com/js/plusone.js', 'http://connect.facebook.net/en_US/all.js#xfbml=1', 'http://platform .twitter.com/widgets.js';

但我不确定这种方法是否正确......

<script type="text/javascript">
//<![CDATA[
(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = 'http://apis.google.com/js/plusone.js';
s.parentNode.insertBefore(g, s);
})(document, 'script');
//]]>
</script>


<script type="text/javascript">
//<![CDATA[
(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = 'http://connect.facebook.net/en_US/all.js#xfbml=1';
s.parentNode.insertBefore(g, s);
})(document, 'script');
//]]>
</script>


<script type="text/javascript">
//<![CDATA[
(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = 'http://platform.twitter.com/widgets.js';
s.parentNode.insertBefore(g, s);
})(document, 'script');
//]]>
</script>

【问题讨论】:

    标签: javascript asynchronous


    【解决方案1】:

    试试:

    <script type="text/javascript">
    //<![CDATA[
    (function(d, t) {
    var gplus = d.createElement(t), fb = d.createElement(t), twt = d.createElement(t),
    
    // google plus
    gplus.async = true,
    gplus.src = 'http://apis.google.com/js/plusone.js',
    
    // facebook
    fb.async = true,
    fb.src = 'http://connect.facebook.net/en_US/all.js#xfbml=1',
    
    // twitter
    twt.async = true,
    twt.src = 'http://platform.twitter.com/widgets.js',    
    
    s = d.getElementsByTagName(t)[0];
    
    s.parentNode.insertBefore(gplus, s);
    s.parentNode.insertBefore(fb, s);
    s.parentNode.insertBefore(twt, s);
    })(document, 'script');
    //]]>
    </script>
    

    【讨论】:

      【解决方案2】:
      var scripts = ["http://apis.google.com/js/plusone.js","http://connect.facebook.net/en_US/all.js#xfbml=1","http://platform.twitter.com/widgets.js"];
      (function(array) {
         for (var i = 0, len = array.length; i < len; i++)
         {
            var elem = document.createElement('script');
            elem.type = 'text/javascript';
            elem.async = true;
            elem.src = array[i];
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(elem, s);
         }
      })(scripts);
      

      这是我的解决方案,在 Linux 下的 Chrome 和 Mozilla 上测试过!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多