mashirozx / sakura

A Wonderful WordPress Theme: 樱花庄的白猫博客主题
https://2heng.xin/theme-sakura/
GNU General Public License v2.0
3.57k stars 587 forks source link

开启PJAX局部刷新后,文章和页面中的短代码无法解析,需手动刷新 #285

Open Starlwr opened 2 years ago

Starlwr commented 2 years ago

问题描述

安装短代码插件(Shortcoder),并开启PJAX局部刷新后,从首页点开页面或文章,其中的短代码无法解析,效果如下 短代码刷新前 手动刷新后才可以正常显示,效果如下 短代码刷新后 图片中是引入了一个element-ui的测试按钮,在插件中新建短代码,名称为element-button,添加以下代码后保存,即可在文章或页面中使用[sc name="element-button"][/sc]引入

<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<div id="app">
    <el-button @click="visible = true">Button</el-button>
    <el-dialog :visible.sync="visible" title="Hello world">
        <p>test</p>
    </el-dialog>
</div>
<script>
    new Vue({
        el: '#app',
        data: function() {
            return { visible: false }
        }
    })
</script>
mashirozx commented 2 years ago

需要把相关代码放进重载函数里面,见app.js

Starlwr commented 2 years ago

看了一下sakura-app.js,但是没太搞明白,是需要把解析短代码相关的函数放在this.pjax = function () 里面吗,如果您知道如何操作的话可否稍微再指点一下

mashirozx commented 2 years ago

对的,放里面

smallsay commented 2 years ago

有无简单的示例?比如就 console.log("每个页面都运行这句") 让每个页面在控制台都输出

mashirozx commented 2 years ago

https://github.com/mashirozx/sakura/blob/3.x/js/sakura-app.js#L22-L31