最近切换 Highlight 高版本后,遇到有些语言报错了。
WARN: Could not find the language 'properties', did you forget to load/include a language module?
WARN: Falling back to no-highlight mode for this block.
Highlight
最新版本没有自动加载非内置语言包,这里需要手动引入才行,当然也可以做到自动加载,下面上干货。
const rootPath="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-y/highlight.js/11.4.0/languages/";
hljs.safeMode();
document.querySelectorAll("code").forEach(function (ele){
let languageArr=ele.className.split('-');
if (languageArr.length!==2){
hljs.highlightElement(ele);
return true;
}
let language=languageArr[1].trim();
if (hljs.getLanguage(language)){
hljs.highlightElement(ele);
return true;
}
let languageSource=rootPath+language+".min.js";
let script=document.createElement('script');
script.src=languageSource;
document.body.appendChild(script);
script.addEventListener('load',function (){
hljs.highlightElement(ele);
})
});
我这里使用的是字节跳动的 CDN 库,速度还不错。