开源评论系统remark42的PJAX适配

桜庭清夏 · 2021-05-07 19:13:30 


该教程适用于Hexo-Sakura主题,理论上也适应于其他pjax博客主题。

解决方案

寻找回调函数

先寻找到js代码中的pjax部分,其中要定位的代码pjax:complete部分是pjax完成回调函数的部分。

随后在pjax:complete下面加下列代码

try {
        if (typeof REMARK42 !== undefined) {
            REMARK42.createInstance({
            host: "https://siteurl.com",
            site_id: 'ubur',
            components: ['embed', 'last-comments', 'counter'],
            url: window.location.origin + window.location.pathname,
            max_shown_comments: 10, 
            theme: 'light',
            locale: 'en',
            show_email_subscription: true 
            })
            !function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document)
        }
    }
    catch(e)
    {
            
    }
    

首先判断当前页面REMARK42是否被加载过一次,如果是,那么回调函数正常执行。如果不是(新开页面)就不会触发(那就正常load进来了,无需回调)。


你是否会像清风拂过花儿一样与我相遇呢?