2011-07-12 15 views
0

これまで私はこれらの3つのソーシャルボタンをページの最後に持っています。私は同じ機能を3回書き直すことはそれほどスマートではないと考えていました。私はそれらを結び付けることができますか?それは働くだろうか?複数の非同期ソーシャルボタンローダーを1つにまとめることは可能ですか?

どのようにすればいいですか?論理的には私はそうするでしょう: 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> 

答えて

5
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!

+0

すてきな解決策!これは簡単に拡張可能です:) thx。 –

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> 
関連する問題