多说适配pjax

最近开发3-hexo主题,由于主题使用的pjax,异步加载页面时多说会出现加载不到多说js的问题。

多说加载代码如下:

//加载多说
function loadComment() {
  duoshuoQuery = {short_name: $(".theme_duoshuo_domain").val()};
  var d = document, s = d.createElement('script');
  s.src = 'https://static.duoshuo.com/embed.js?t='+new Date().getTime();
  s.async = true; s.charset = 'UTF-8';
  (d.head || d.body).appendChild(s);
}

当局部加载页面时,就会无法加载多说。
需要编写一个js方法,参考文档:(http://dev.duoshuo.com/docs/50b344447f32d30066000147)

/**
 * pjax后需要回调函数.加载多说
 */
function pajx_loadDuodsuo(){
  if(typeof duoshuoQuery =="undefined"){
    loadComment();
  } else {
    var dus=$(".ds-thread");
    if($(dus).length==1){
      var el = document.createElement('div');
      el.setAttribute('data-thread-key',$(dus).attr("data-thread-key"));//必选参数
      el.setAttribute('data-url',$(dus).attr("data-url"));
      DUOSHUO.EmbedThread(el);
      $(dus).html(el);
    }
  }
}

在pjax:end中调用此方法即可。


部分资料来源于网络,版权属其原著者所有,只供学习交流之用。如有侵犯您的权益,请联系【公众号:码农印象】删除,可在下方评论,亦可邮件至ysluckly.520@qq.com。互动交流时请遵守宽容、换位思考的原则。

×

喜欢就点赞,疼爱就打赏

(function(){ var bp = document.createElement('script'); bp.src = '//push.zhanzhang.baidu.com/push.js'; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();
休闲小游戏