Можно ли объединить несколько асинхронных загрузчиков социальных кнопок в один? - PullRequest
0 голосов
/ 12 июля 2011

Пока у меня есть эти 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>

Ответы [ 2 ]

5 голосов
/ 12 июля 2011
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);

Это мое решение, протестированное на Chrome и Mozilla под Linux!

1 голос
/ 12 июля 2011

Попробуйте:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...