转换代码格式:首先,需要处理UEditor发布的代码格式,因为Prism.js仅支持类似<pre><code class="code language-代码语言">代码</code></pre>的格式,而UEditor默认发布的代码格式为<pre class="brush:代码语言;toolbar:false">代码</pre>。因此,需要在前端显示时进行格式转换。这可以通过JavaScript实现,遍历所有带有class属性的<pre>标签,然后根据class属性中的brush:字段提取出语言类型,并将内容转换为Prism.js支持的格式。
应用Prism.js:一旦代码格式被正确转换,就可以应用Prism.js进行高亮显示了。这通常涉及到调用Prism.js的highlightElement方法,对转换后的代码元素进行高亮处理。
显示行号:如果需要显示行号,可以在转换后的<code>标签上添加相应的类名或属性,以支持行号显示功能。
集成到UEditor:最后,将上述转换和处理逻辑集成到UEditor中,确保在发布内容时能够正确应用这些转换规则,从而实现代码的高亮显示。
具体实现时,可以参考以下JavaScript代码片段,它展示了如何遍历并转换UEditor发布的
<pre class="brush:代码语言;toolbar:false">代码</pre>
以上是UEditor输出的
<pre><code class="code language-代码语言">代码</code></pre>
以上是Prism.js所需要的输出的
要想前者输出的代码适用Prism.js 只需要在模板里加上如下JS
<!-- prism 高亮 UEditor --> <script type="text/javascript"> var $codepre = $("pre[class]"); if($codepre.length>0){ for(var i = 0;i<$codepre.length;i++){ var item = $codepre.eq(i); var language = ""; item.attr("class").replace(/brush:([^;]+)/,function(a,b){ language = b; }); if(language){ var codehtml = item.html(); var code = $("<code>"); code.attr("class","code lang-"+language); code.html(codehtml); item.html(code); Prism.highlightElement(code[0]); } } } </script> <!-- prism 高亮 UEditor -->