多说适配 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

×

喜欢就点赞,疼爱就打赏