javascript - 是否可以将多个异步社交按钮加载器合并为一个?

标签 javascript asynchronous

到目前为止,我在页面末尾有这 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>

最佳答案

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 上进行了测试!

关于javascript - 是否可以将多个异步社交按钮加载器合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662845/

相关文章:

javascript - 当我将鼠标悬停在按钮的边缘时,如何让我所有的栏都变成黑色?

javascript - THREE.js 中的法线贴图

c# - Socket.EndRead 0字节意味着断开连接?

javascript - Node.js 中的回调未异步执行

c# - 如何处理任务等待程序中未处理的异常

iOS - 串联基于 block 的异步操作

javascript - 将提交按钮对象添加到变量,而不引用 ID

javascript - CSS使图像与包含元素的高度相同

javascript - 如何使用 jQuery 从最近的跨度中删除一个类?

c# - 使用 LINQ 创建等待任务