Prism 代码高亮修改不包含 Code 标签的支持
程序员文章站
2022-06-16 19:45:39
在 wordpress 中加入了百度的 ueditor 编辑器后,由于自带的代码插件在使用时只会在代码外层加入 pre 标签,如图:
但实际 prism 高亮需要下面...
在 wordpress 中加入了百度的 ueditor 编辑器后,由于自带的代码插件在使用时只会在代码外层加入 pre 标签,如图:
但实际 prism 高亮需要下面这种格式的支持:
<pre class="line-numbers language-csharp"> <code> //高亮代码 </code> </pre>
所以为了能够支持 pre 中没有 code 标签的情况,在文件 prism.js 中查找 highlightall 并修改如下代码:
.... highlightall: function(async, callback) { //var elements = document.queryselectorall('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'); //for (var i=0, element; element = elements[i++];) { // _.highlightelement(element, async === true, callback); //} //支持 pre 标签,修改为 var clsreg = /\s*\blanguage-\b\s*/; var pres = document.queryselectorall("pre"); for (var i = 0, pre; pre = pres[i++];) { var iscode = false; if ((pre.firstchild && (iscode = (pre.firstchild.tagname === "code")) && clsreg.test(pre.firstchild.classname)) || clsreg.test(pre.classname)) { if (!iscode) pre.innerhtml = "<code>" + pre.innerhtml + "</code>"; _.highlightelement(pre.firstchild, async === true, callback); } } } ....
修改后进行 js 压缩,然后覆盖原文件,然后在 wordpress ueditor 中插入的代码在前端页面就能高亮显示了。
prism 高亮官网地址:http://prismjs.com/
prism github 地址:https://github.com/prismjs/prism
上一篇: 左值与右值