解决AJAX(PJAX)下代码高亮无法渲染的问题

伏笔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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值