我使用highlight.js突出显示HTML中的代码块。highlight.js可以找到所有代码块并自动确定语言,但是我想手动指定元素和语言。通过指定语言,我希望避免确定它是哪种语言的开销(虽然highlight.js速度快,但如果它跳过语言检测,我想它可能会更快)。
在HTML中,我将语言指定为类(为了代码块的一些样式,我需要这样做)。
<pre>
<code class="python">
print "Hello"
</code>
</pre>在JavaScript中,我迭代代码元素(出于其他原因,我需要获得这些元素的列表)。当我迭代代码元素时,我调用hljs.highlightBlock函数。因为我知道这种语言(存储为类),所以我认为实际告诉highlight.js它应该突出显示的语言是有利的。
从highlight.js网站上的使用示例中,我猜到我可以调用hljs.configure函数并指定要尝试的语言列表:
// ...
if (codeElement.hasClass('python'))
language = 'python';
else if (codeElement.hasClass('bash'))
language = 'bash';
hljs.configure({languages: [language]});
hljs.highlightBlock(codeElement[0]);然而,我不确定这是否是正确的方法。首先,我不清楚这是否是我可以依赖的官方API。其次,我认为highlight.js仍在试图确定代码块是否使用给定的语言(这正是我最初想要避免的)。
发布于 2017-01-27 22:36:17
您正在迭代“预代码”元素,对吗?但是您在'code‘标记中指定了语言,而不是在'pre’标记中指定了语言。我也有同样的问题,并且专门处理最上面元素上的语言,解决了这个问题。您的html代码应该如下所示:
<pre class="python">
<code>
print "Hello"
</code>
</pre>还请确保您正在使用的highlight.js包中包含了“python”:)
https://stackoverflow.com/questions/24122530
复制相似问题