多说适配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中调用此方法即可。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏