百度編輯器 UEditor 用 highlight.js 庫實(shí)現(xiàn)代碼高亮
發(fā)布時間:2021-03-06 17:00:02
來源:
https://highlightjs.org/download/
寫個頁面測試下先:(其中 monokai-sublime.css,是 sublime 編輯器的一種常用樣式,styles 文件夾有很多不同的樣式庫,可以多換換,挑個自己喜歡的用)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>代碼高亮demo</title> </head> <body> <!-- 引入css和js --> <link rel="stylesheet" type="text/css" href="./styles/monokai-sublime.css"> <script type="text/javascript" src="./highlight.pack.js"></script> <script>hljs.initHighlightingOnLoad();</script> <!--隨便找斷代碼,放到<pre><code>***</code></pre>之間--> <pre> <code> $(document).ready(function(){ $("ul").each(function(){ var lis = $(this).find("li"); for(i in lis){ var li = lis[i]; console.log(i); if(i == 0){ $(li).addClass("num_0"); }else{ if(i % 4 == 0){ $(li).addClass("num_"+0); }else{ $(li).addClass("num_"+(i%4)); } } } }); }); </code> </pre> </body> </html>
highlight.js 代碼高亮遵循的格式是:<pre><code>**</code></pre>,
而百度編輯器的代碼語言模式生成的為 <pre>**</pre> 缺少 <code></code> 那一層,
所以還要在頁面加一段 js,循環(huán)往 pre 標(biāo)簽里添加 code 標(biāo)簽。如下:
<script type="text/javascript"> var allpre = document.getElementsByTagName("pre"); for(i = 0; i < allpre.length; i++) { var onepre = document.getElementsByTagName("pre")[i]; var mycode = document.getElementsByTagName("pre")[i].innerHTML; onepre.innerHTML = '<code id="mycode">'+mycode+'</code>'; } </script>
至此,大功告成。
此外,還可以對代碼塊自定義 css,例如 white-space: pre; /*不強(qiáng)制換行*/ ,滾動條樣式 scrollbar 等。
PJAX 支持】
<script> $(document).ready(hljs.initHighlighting); //回調(diào)插件 $(document).on('pjax:complete', function() { var allpre = document.getElementsByTagName("pre"); for(i = 0; i < allpre.length; i++) { var onepre = document.getElementsByTagName("pre")[i]; var mycode = document.getElementsByTagName("pre")[i].innerHTML; onepre.innerHTML = '<code id="mycode">'+mycode+'</code>'; }; //循環(huán)插入<code></code> $('pre code').each(function(i, block) { hljs.highlightBlock(block); }); //高亮代碼 }); </script>