2

我正在使用 ShareThis 在我的网站上包含一个不错的社交网络共享栏。问题是它有时加载速度非常慢,并且页面加载会持续几秒钟。

以下内容必须包含在 HTML 头中:

<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript" src="http://s.sharethis.com/loader.js"></script>

然后以下是正文的底部:

<script>
var options={ "publisher": "xxxxxxxxxxxxxxxxxxxx", "position": "left", "ad": { "visible": true, "openDelay": 5, "closeDelay": 0}, "chicklets": { "items": ["facebook", "googleplus", "pinterest", "amazon_wishlist", "email", "sharethis"]}};
var st_hover_widget = new sharethis.widgets.hoverbuttons(options);
</script>

我在想,如果我可以强制它在页面之后加载,那么它不会减慢页面速度。是否有捷径可寻?例如,是否可以在页面加载后通过javascript将所有这些代码插入到HTML中的正确位置,然后继续按应有的方式加载,以便页面快速加载,然后ShareThis栏可以在其余部分加载页面的?

4

5 回答 5

1
<script id="shareThisScript" type="text/javascript">var switchTo5x=true;</script>

<script type="text/javascript">
    setTimeout(function() {
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = 'http://w.sharethis.com/button/buttons.js';
        var c = document.getElementById('shareThisScript');
        c.parentNode.appendChild(s, c);

        s = document.createElement('script');
        s.type = 'text/javascript';
        s.innerHTML = 'var options={ "publisher": "xxxxxxxxxxxxxxxxxxxx", "position": "left", "ad": { "visible": true, "openDelay": 5, "closeDelay": 0}, "chicklets": { "items": ["facebook", "googleplus", "pinterest", "amazon_wishlist", "email", "sharethis"]}};var st_hover_widget = new sharethis.widgets.hoverbuttons(options);';
        c.parentNode.appendChild(s, c);
    }, 10);
</script>

不知道你为什么使用 loader.js。没有它,它就可以在我们的网站上运行。

于 2013-01-17T06:30:45.673 回答
0

使用这样的按钮使用延迟加载(但不适用于底部栏):

 window.onload = function() {       
    LazyLoad.js( ['http://w.sharethis.com/button/buttons.js','http://s.sharethis.com/loader.js'], function () {
      stLight.options(
        { publisher: "xxxxxxxxxxxxxx", doNotHash: true, doNotCopy: true ,hashAddressBar: false}
      );
    }); 
  }

检查这个延迟加载

于 2014-09-29T16:28:43.560 回答
0

您能否将 sharethis 代码放在单独的框架中?然后主页和社交栏将彼此独立加载。

于 2012-05-18T20:02:28.203 回答
0

我们可以使用 require.js 作为脚本或模块加载器,看看它。

于 2012-05-18T11:17:17.570 回答
0

听起来你在延迟加载之后!

(function() {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'http://w.sharethis.com/button/buttons.js';
    var x = document.getElementsByTagName('script')[0];
    x.parentNode.insertBefore(s, x);
})();
于 2012-05-18T11:18:02.580 回答