Prism代码高亮Pjax重载函数
时间:2022-07-22
本文章向大家介绍Prism代码高亮Pjax重载函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一个解决Pjax下代码高亮异常的方法
前言
最近给博客加入了代码高亮的功能,发现直接访问文章页面有代码高亮 但是进首页再点击文章页后,代码高亮消失,刷新才行 发现是Pjax的问题,解决后就在此做个记录并分享
Pjax
Pjax
是一种无刷新式打开链接的方式,是对Ajax
+PushState
的封装。用了Pjax
后,某些Js
只会执行一次,甚至不执行。因为,一般Pjax
只刷新#main
部分,而不刷新底部,顶部,边栏以及一些Js
。
PrismJs实现的高亮代码
主要包括自己设置的Prism
高亮代码以及CodeHighlighter
,不管哪个,只要是Prism
,就可以通过以下内容重载。
主题设置Pjax重载
↓这部分内容,需要你的主题后台,有设置pjax重载的选项↓
↓代码如下↓
if (typeof Prism !== 'undefined') {
var pres = document.getElementsByTagName('pre');
for (var i = 0; i < pres.length; i++){
if (pres[i].getElementsByTagName('code').length > 0)
pres[i].className = 'line-numbers';}
Prism.highlightAll(true,null);}
↓如果你的主题不支持设置pjax重载,请看footer.php添加部分所述↓
footer.php添加pjax重载
↓如果主题不支持设置Pjax重载,请打开主题的footer.php文件↓
↓在 /body 前添加如下内容即可↓
<script type="text/javascript">
$(document).on('pjax:complete', function() {
if (typeof Prism !== 'undefined') {
var pres = document.getElementsByTagName('pre');
for (var i = 0; i < pres.length; i++){
if (pres[i].getElementsByTagName('code').length > 0)
pres[i].className = 'line-numbers';}
Prism.highlightAll(true,null);}
});
</script>
如果你魔改了主题很多地方,比如通过Js实现了一些功能
需要刷新才生效,那就是需要Pjax重载
你可以将你的Pjax重载添加到本文中的Pjax重载函数中
↓不懂?请看下图以及代码举例↓
<script type="text/javascript">
$(document).on('pjax:complete', function() {
重载一
重载二
重载三
});
</script>
本篇文章采用 署名 4.0 国际 (CC BY 4.0) 许可协议进行许可。
- 泛型List<T>使用示例
- linux系统最小化安装后的初始化脚本
- 简单对比git pull和git pull --rebase的使用
- VS 2010一步步开发windows服务(windows service)
- 运算符重载,以及迭代器[foreach]示例
- 牛津大学王宁博士:大数据与有限理性
- 侃哥:苹果服软了就“降速门”公开致歉并祭出优惠
- 委托示例(利用委托对不同类型的对象数组排序)
- event & delegate Demo(事件&委托示例)
- 最简单的匿名方法与委托示例
- Eclipse与Android源码中ProGuard工具的使用
- VSTS知识整理
- msmq在Internet上访问的问题(只能发送,不能接收)
- .Net3.0中的自动属性(示例)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法