本站已启用全站pjax加载

技术 其它-pjax
编辑文章

rt.

已知bug已经全部修复完毕。

已知bug:

  1. 代码高亮、目录和公式的js尚未回调,如果确实需要请手动刷新查看。
  2. archives页面出现未知错误。
  3. (感谢Duanyll大佬)评论区在pjax加载后无法使用。

欢迎在评论区反馈bug。

启用pjax

参考资料:https://www.ihewro.com/archives/354/

先引入jQuery和pjax的js文件。

注意:jq2.x配pjax1.x,jq3.x配pjax2.x
<script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/jquery.pjax/2.0.1/jquery.pjax.js"></script>

然后调用pjax,我的是这么写的:

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

其中<?php Helper::options()->siteUrl()?>是typecho的自带函数,意思是站点首页的url。在这里就给整个站点所有非blank的链接绑定pjax。container和fragment就是指需要pjax刷新的部分,timeout就是超过多少毫秒就自动整个页面重新加载。

然后我把需要pjax刷新的地方用一个id为pjax的div包括起来就行了。

加载动画我用的是nprogress,按照github的说明引入js和css,然后加上两句代码即可:

$(document).on('pjax:start', function() { NProgress.start(); });
$(document).on('pjax:end',   function() { NProgress.done(); });

我的整个pjax代码如下:

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

bug的解决

目录和公式的js失效

因为自己懒得再专门给他们封装和函数然后回调,所以我就很暴力的把它们写在了pjax的div里面。

评论失效

typecho的反垃圾保护需要用到ajax获取评论,与pjax冲突,在设置里关掉即可。

代码高亮失效

这个应该是最难解决的一个问题了,不管是写在div里面还是回调,都会失效。

搜索了半天终于找到了解决方案:https://vps.fubi.hk/foreshadowingvps/zhishiku/20181025/6234.html

我的解决代码如下:

<script>
function loadscript(url, callback) {

    var script = document.createElement("script")

    script.type = "text/javascript";

    if (script.readyState) {

        script.onreadystatechange = function () {

            if (script.readyState == "loaded" || script.readyState == "complete") {

                script.onreadystatechange = null;

                callback();

            }

        };

    } else {

        script.onload = function () {

            callback();

        };

    }

    script.src = url;

    document.getElementsByTagName("head")[0].appendChild(script);

}

loadscript('/usr/plugins/CodeStyle/markdown/highlight.pack.js', function () {

    hljs.initHighlighting();

});
</script>

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空
    duanyll
    2019-01-21 18:46

    您看看

      Llf0703
      2019-01-21 20:55

      现在应该好了,您试试?

    black_white_tony
    2019-01-23 00:01

    %%% TQL
    准备把自己的博客的wordpress删了,竟然连markdown都不支持
    改用您正在使用的Typecho
    qwq
    (所以我到底想要表达什么)

      Llf0703
      2019-01-23 15:42

      wordpress似乎是可以通过插件兹磁md的吧
      我主要是觉得wordpress太臃肿了,有些时候改些东西不好改
      还有您的博客似乎访问不了

        black_white_tony
        2019-01-31 09:06

        出大锅了

        怎么搞都是404或403

        nginx出锅了 太吓人了 = =

        black_white_tony
        2019-01-31 09:07

        目前正在重装VPS = =

        black_white_tony
        2019-01-31 09:44

        伪静态的锅,正在修 = =

        祝您RP++

        Mr.Tlyer
        2022-04-22 08:52

        高亮代码失效问题得到了解决

    Veen Zhao
    2020-02-23 19:45

    这个Pjax搞得我心好累