typecho使用Pjax小结

记我在制作PureLoveForTypecho主题时, 使用Pjax遇到的一些问题

Pjax用法

引入类库后 在主题footer.php里添加以下代码即可

$(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"], a[no-pjax])', {
    container: '#pjax-container',
    fragment: '#pjax-container',
    timeout: 8000,
});

记坑

1.发现Pjax版本需要与Jquery版本保持某个契合度: 大概是pjax 1.9.x版本应配合jq 2.x版本; pjax2.0.x以上的版本 使用jq 3.x 才能使用, 否则bug bug~

2.标签要闭合: 如果页面上html标签没有写完整, 也会导致pjax无法生效 如<body>没有闭合

3.pjax完成后需要重载其他类库, 如代码高亮

4.评论区错误: 点击回复按钮JS报错后, 无法将评论框定位到回复区(但是刷新一下页面, 就会恢复正常)

Uncaught ReferenceError: TypechoComment is not defined at HTMLAnchorElement.onclick

引起这个原因是: window.TypechoComment对象是typechohead标签里调用$this->header()方法为我们生成的, Pjax加载后window.TypechoComment没有被重新载入进来. 且window.TypechoComment里的respondId 没有被重新生成.

解决方案:
Pjax的替换#pjax-container时, 重新载入window.TypechoComment对象:

<div id="pjax-container">
    <!--commentReply=1 表示仅输出 window.TypechoComment 对象-->
    <?php $this->header('commentReply=1&description=0&keywords=0&generator=0&template=0&pingback=0&xmlrpc=0&wlw=0&rss2=0&rss1=0&antiSpam=0&atom'); ?>
</div>

5.听说要关闭反垃圾保护, 这个我没有验证过.

我来吐槽

*

*

已有 18 条评论

  1. nice

    写的啥呀看不明白😂

  2. 枫叶

    不太喜欢用Pjax,感觉这个玩意儿得专业人才整得完美,不然总觉得怪怪的。

    1. Hoe

      Pjax可以让用户体验变得更友好

  3. 云天

    https://qqdie.com/archives/typecho-recovery-visible-ok.html
    博主这个希望 可以添加进新版
    不过 大佬可以先告诉我ajax.php添加什么吗

    1. Hoe

      抱歉, 我没明白你的意思

      1. 云天

        就是这个回复可见 希望可以添加到下一个版本
        还有就是他们说ajax不加载这个的话
        就在pjax中重新加载这个$( ".class的名字").fancybox();
        大佬的模板应该在ajax里添加什么代码

        1. Hoe

          回复可见我没有研究过, 不知道怎么实现
          你的背影非常赞!

        2. Hoe

          pjaxComplete()是Pjax完成后执行的方法😀

          1. 云天

            好吧 虽然没明白什么意思
            我就是想问下博主的模板怎么实现回复可见
            还有我觉得我找的这个背景比较好看
            适合这个模板 博主觉得怎么样

  4. 吃馒头的猫

    亲身实践,是要关闭反垃圾保护才行

    1. Hoe

      学习了,感谢大佬提醒

      1. 吃馒头的猫

        你才是大佬,我只是个菜鸟

  5. 小宇

    之前用了一下,貌似要把“检查评论来源页 URL 是否与文章链接一致”这个关闭掉,不知道你这里有没有关闭。。

    1. Hoe

      我的这个选项是开启的😁, 你那出现什么问题了吗?

      1. 小宇

        貌似解决了,不过我现在没有用PJAX咯

  6. 沙扬娜拉

    比较简洁,挺好的~

  7. 张波博客

    能自己做主题,真好,

  8. 点滴记录

    每一次小结,就是一种进步,加油