解决 PJAX 导致 Typecho 评论失效的问题

April 11th, 2016

之前鼓捣过几个实现了 PJAX 的 Typecho 主题都同样地遇到了评论回复功能失效的问题,在制作现用的 Liteday 主题时也不例外,虽然我尝试过覆写页面 <head> 部分及修改 Typecho 源代码等方法,但步骤都较为繁琐,对于日后维护可能会造成一些不便。

在测试过 Google 搜出的各种解决方案之后,我认为重载评论函数的方法效果是最佳的,其原文是把源码中的评论回复函数直接复制到 PJAX 相关函数当中,在每次加载页面时将代码添加到需要更新内容的元素的结尾位置来实现重载。

然而,考虑到 Typecho 日后升级可能会对相关函数作出修改,可以对上述方法进行一些改进,即每次加载页面时动态取出头部相关代码,在更新页面时将其追加到相关元素后面一并进行更新以达到重载 window.TypechoComment 对象的目的。

var commentFunction = data.match(/<script type=\"text\/javascript\">\s*?\(function \(\) {\s*?window.TypechoComment[\s\S]*?<\/script>/i);

上面的给出是利用正则匹配取出页面 window.TypechoComment 代码的方法,可以适当进行参考。

本文共有 23 则回复
  1. 小小七 小小七 回复

    试试楼主的这个评论,看会掉消息不。

    1. Wis Chu Wis Chu

      本文不是关于解决评论掉消息问题的,建议您找其他解决办法

    2. 小小七 小小七

      不知道JS放哪儿,不会JS。。。。55555

  2. 友人C 友人C 回复

    困扰好久的问题

  3. 疯狂减肥带 疯狂减肥带 回复

    很怀疑 Typecho 日后升级....有生之年。。 主题好漂亮 很期待

    1. Wis Chu Wis Chu

      Typecho 的 Github 还是一直在更新的啦~
      至于主题的话,以后有机会会放出的~

  4. Ben Ben 回复

    想问问博主,侧边栏的天气是手动一天天改的么?

    1. Wis Wis

      您好,恭喜你猜对了!

  5. Robin Wong Robin Wong 回复

    测试所谓的失效评论

    1. Wis Wis

      很想到无边搜索,然后与岁月摔角

  6. Tokin Tokin 回复

    评论的三个input原本是打算再一行显示的么,我这边“网址”折行了....

    1. Wis Wis

      嗯嗯是的,要找个时间改一下,感谢提醒

  7. kaikai kaikai 回复

    好高端的感觉,看不懂

  8. Ben Ben 回复

    博客主题很赞,赞,赞

  9. 殁漂遥 殁漂遥 回复

    网站主题很简洁,赞

  10. keinx keinx 回复

    博客主题好炫酷~~~

    1. Wis Wis

      其实并没有什么亮点orz

  11. 面码酱 面码酱 回复

    pjax全站的感觉好厉害的说w(゚Д゚)w

  12. arfaWong arfaWong 回复

    现在这个liteday主题好漂亮

  13. 香菇 香菇 回复

    有盆友的博客出过这个问题,马克啦(≧∇≦)

    1. Wis Wis

      感谢马克 /w\