您现在的位置是:网站首页 > 代码编程 > WEB前端WEB前端
【原】Highlight.js不兼容换行符,导致代码块注释高亮排版错乱
不忘初心 2020-09-29 围观() 评论() 点赞() 【WEB前端】
简介:今天将Highlight.js升级到了10.2.0,在集成到wangEditor中去的时候,发现只要碰到有注释的地方,不管是什么编程语言,都会出现高亮部分的排版错乱情况,但是我把需要高亮的代码单独拿出来,写了一个html做测试,它又不会出问题了,所以,我猜测可能是需要高亮的代码有问题。
今天将Highlight.js升级到了10.2.0,在集成到wangEditor中去的时候,发现只要碰到有注释的地方,不管是什么编程语言,都会出现高亮部分的排版错乱情况,但是我把需要高亮的代码单独拿出来,写了一个html做测试,它又不会出问题了,所以,我猜测可能是需要高亮的代码有问题。
如上图,从第四行注释开始,后面的内容全部变成了注释,进一步猜测,是否没有对换行做处理,导致后面的代码没能被识别,从而都被当成了注释?
为了验证我这个猜想,我在wangEditor的_insertCode
方法中打了一个log,然后将代码拷贝出来,放到我自己做测试的那个html文件中去(截图的代码太长了,我选了一个短一点儿的代码块打印)。
<!doctype html>
<html>
<head>
<title>hljs</title>
<link rel="stylesheet" type="text/css" href="styles/github.css">
<script type="text/javascript" src="highlight.pack.js"></script>
</head>
<body>
<div class="test">
<!-- 高亮排版有问题的代码块 -->
<pre>
<code class="hljs javascript">
// 插入代码<br/>_insertCode: function _insertCode(value) {<br/> var editor = this.editor;<br/> editor.cmd.do('insertHTML', '<pre><code>' + value + '</code></pre><p><br></p>');<br/>}
</code>
</pre>
<!-- 我直接拷贝的原始代码块 -->
<pre>
<code class="hljs javascript">
// 插入代码
_insertCode: function _insertCode(value) {
var editor = this.editor;
editor.cmd.do('insertHTML', '<pre><code>' + value + '</code></pre><p>>br></p>');
}
</code>
</pre>
<!-- 高亮排版没问题的代码块 -->
<pre>
<code class="hljs javascript">
// 插入代码
<br/>_insertCode: function _insertCode(value) {
<br/>var editor = this.editor;
<br/>editor.cmd.do('insertHTML', '<pre><code>' + value + '</code></pre><p>>br></p>');
<br/>}
</code>
</pre>
</div>
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>
</body>
</html>
上述代码,我做了三种展示,注释都写的很清楚了,所以我就不再逐一描述了,直接运行看下效果。
从这个效果图上,已经可以很好的印证出我们上面的猜测了,就是换行出了问题。
第一种是经过wangEditor做了处理的内容,将换行符替换成了<br/>标签,并且去掉了\r\n换行符;
第二种是我直接从IDE中拷贝出来的代码块,直接就带有\r\n这种换行符;
第三种比较特殊,有了<br/>之后,又敲了一个回车,也就是说最终也带有\r\n换行符;
从上面的情况,我们可以总结出,<br/>标签并不好使,而只要带了\r\n这种换行符的,就不会有问题,可是我要如何让它识别出<br/>标签来作为换行符呢?
我又去highlight的官网溜达了一圈,结果在点来点去的过程中,让我发现了一件事,其实人家早就给出了解决方案,只不过我自己眼瞎没看到,在它的usage中,有如下一段描述:
只需要一句代码就搞定了
hljs.configure({useBR: true});
效果如下:
看完文章,有任何疑问,请加入群聊一起交流!!!
很赞哦! ()
相关文章
- IntelliJ IDEA 2024.2发布之后强推新UI,如何恢复老的经典UI界面
- Uninstall hasn't detected folder of intelli] lDEA installation. Probablyuninstall.exe was moved from the installation folder.
- 公众号CPS变现新宠:微赚淘客查券返利机器人,开启智能省钱赚钱新时代
- 高返利优惠券公众号推荐
- 返利公众号可信吗安全吗?返利机器人哪个佣金高?
- 唯品会购物返利公众号大揭秘:哪些真正好用的返利公众号?
- 饿了么优惠券免费领取:哪些公众号值得推荐?
- 哪些有用可靠的微信公众号能领淘宝优惠券?
- 微信返利最高的微信号推荐——让你的购物更加实惠!
- 微信返利最高的微信号推荐
标签云
猜你喜欢
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
- IntelliJ IDEA 2019.3利用补丁永久破解激活教程
- IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
- Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
- IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
- 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
- ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
- 如何激活idea2022.1及以上版本中的插件(亲测可用)
- 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
- IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
站点信息
- 网站程序:spring + freemarker
- 主题模板:《今夕何夕》
- 文章统计:篇文章
- 标签管理:标签云
- 微信公众号:扫描二维码,关注我们