伏笔VPS在用的wordpress代码高亮插件是Pure Highlightjs,很笨重简约的一款高亮插件。在做本站这套正题的时候,发现1个问题
当页面通过AJAX的方法加载的时候,内容页的代码高亮部分没法衬着,也就是高亮插件没有加载
思索到AJAX的规律,初步断定是负责衬着的js没有执行,因而就找插件的代码看了一通,发现重要的部分
hljs.initHighlightingOnLoad();
因而就把这句加到AJAX执行后的complete事变里……发现居然不生效……好吧,持续探索
接着又想到可能还需要在AJAX时重新加载一下高亮所需的js文件,因而网上就找了几个动态加载js文件的函数,最终找到1个比较完美的,能设置动态加载js文件完成后的事变
//loadJS function loadscript(url, callback){ var script = document.createElement ("script") script.type = "text/javascript"; if (script.readyState){ script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { script.onload = function(){ callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); }
使用:
loadscript(highlight_pluginUrl,function () { hljs.initHighlightingOnLoad(); });
伏笔VPS擦,居然还不生效……奇了怪的,持续返归去考虑高亮插件的代码,本来是基于Pure Highlightjs这款插件是基于highlight.js项目的
它的高亮衬着挪用方式有 initHighlightingOnLoad 、initHighlighting 等,而之前用的 initHighlightingOnLoad 是页面加载事变,因而需要变换一下挪用方式
loadscript(highlight_pluginUrl,function () { hljs.initHighlighting(); });
丢到AJAX的complete事变,完美!
原文链接:https://host.fubi.hk/foreshadowinghost/zhishiku/20181025/8353.html