0

如果我需要将标准社交分享按钮放置在外部 javascript 中,然后在页面内填充,该怎么办?默认按钮基本上是容器和 javascript 代码。

将所有这些内容放入一个 javascript 文件的正确方法是什么?下面我以我看到的方式提供我当前的 JAVASCRIPT 版本,但是在这种情况下,我遇到了 google 的问题,而且在 IE 中没有显示,所以我想也许哪里有更好的方法来做到这一点:

标准 HTML 版本:

<!--social-->
<div id="social">

<!--twitter-->
<div>
<a href="https://twitter.com/share" class="twitter-share-button" data-via="user" data-lang="en" data-count="vertical">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>
<!--/twitter-->

<!--gplus-->
<div>
<g:plusone size="tall"></g:plusone>
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>
</div>
<!--/gplus-->

<!--facebook-->
<div>
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-like" data-layout="box_count" data-href="yourlink" data-width="42" data-show-faces="false"></div>
</div>
<!--/facebook-->

</div>
<!--/social-->

JAVASCRIPT 版本

<script>

function socialBookmarks(){

//containers
var socialString = '<!--social--><div id="social"><!--gplus--><div><g:plusone size="tall"></g:plusone></div><!--/gplus--><!--twitter--><div><a href="https://twitter.com/share" class="twitter-share-button" data-via="user" data-lang="en" data-count="vertical">Tweet</a></div><!--/twitter--><!--facebook--><div><div id="fb-root"></div><div class="fb-like" data-layout="box_count" data-href="yourlink" data-width="42" data-show-faces="false"></div></div><!--/facebook--></div><!--/social-->';

//where to populate bookmars
var divContainer = document.getElementById('container');
divContainer.style.position = 'relative';
var divTag = document.createElement("div");
divTag.style.position = "absolute";
divTag.style.top = "0";
divTag.style.left = "-152px";           
divTag.innerHTML = socialString;    
document.getElementById('container').appendChild(divTag);


//Core social functions

//twitter
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");

//gplus
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();

//fb
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));


}

//Lets wait for page get loaded
function addLoadEvent(func){
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function(){
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

//pull socialbookmarks function
addLoadEvent(function(){
    socialBookmarks();
});

</script>
4

0 回答 0