Prism.js 是一个非常不错的用于处理网页中代码块的JavaScript库。然而,Prism.js嵌入zblog php之后,在使用了整站Ajax或者Pjax之后,自带的代码高亮插件Prism失效了,代码并没有实现高亮。需要再回调一次,强制Prism再次在当前页面运行,实现代码高亮效果。代码如下,(仅限于Zblog php)。具体是否有问题还有待测试。。。表面看上去是成功了的。$(function () {
var compatibility = {
as3: "actionscript",
"c#": "csharp",
delphi: "pascal",
html: "markup",
xml: "markup",
vb: "basic",
js: "javascript",
plain: "markdown",
pl: "perl",
ps: "powershell"
};
var runFunction = function (doms, callback) {
doms.each(function (index, unwrappedDom) {
var dom = $(unwrappedDom);
var codeDom = $("");
if (callback) callback(dom);
var languageClass = "prism-language-" + function (classObject) {
if (classObject === null) return "markdown";
var className = classObject[1];
return compatibility[className] ? compatibility[className] : className
}(dom.attr("class").match(/prism-language-([0-9a-zA-Z]+)/));
codeDom.html(dom.html()).addClass("prism-line-numbers").addClass(languageClass);
dom.html("").addClass(languageClass).append(codeDom)
})
};
runFunction($("pre.prism-highlight"));
runFunction($('pre[class*="brush:"]'), function (preDom) {
var original;
if ((original = preDom.attr("class").match(/brush:([a-zA-Z0-9\#]+);/)) !== null) {
preDom.get(0).className = "prism-highlight prism-language-" + original[1]
}
});
Prism.highlightAll()
});