我之前写过一片关于pjax下很多需要再次请求或者运行一遍的脚本不能正常运行,最主要的就是多说

参照朋友博客的方法我已开始解决了,不过后面就发现,在不同的浏览器下,这个效果很一般,经常出现无法加载的情况。

因此我根据百度统计的加载方式,自己相出了另一种解决办法。

文章链接:www.ptbird.cn/pjax-duoshuo-not-show.html#20161216-2

问题

为什么要再写一篇?

我上篇文章已经更新了两次,不想继续在上面更新了。

两次的更新都是解决一点小的问题,不过我今天发现,我的解决办法还是存在问题的。

如果按照我的解决办法,如果ds-reset这个容器不存在,直接请求html的长度肯定会出错的。

一般报错如下所示:(也是我偶然看到的)

postbird

解决

最终,我的代码如下所示:

先判断ds-rest是否存在,如果不存在就可以直接请求多说了,如果存在进行html的长度判断,这样子html().length的方法也能使用

if ($('.ds-thread').length > 0) {
    //判断容器是否存在 0表示不存在
        //不存在则直接请求多说
        if($("#ds-reset").length==0){
        if (typeof DUOSHUO !== 'undefined') {
            DUOSHUO.EmbedThread('.ds-thread');
            DUOSHUO.ThreadCount($('.ds-thread-count')); 
        }else {
            $.getScript("//static.duoshuo.com/embed.js?ver="+Math.random()); 
        }
    }else if($('#ds-reset').html().length>2000){
        //console.log($('#ds-reset').html().length);
        ;
    }else{
        if (typeof DUOSHUO !== 'undefined') {
            DUOSHUO.EmbedThread('.ds-thread');
            DUOSHUO.ThreadCount($('.ds-thread-count')); 
        }else {
            $.getScript("//static.duoshuo.com/embed.js?ver="+Math.random()); 
        }
    }
}

这段代码怎么使用或者加载还是用的我参照百度统计的方法,具体可以查看这篇文章的更新内容。

文章链接:www.ptbird.cn/pjax-duoshuo-not-show.html#20161216-2

这样子解决后暂时没有出现问题。