我正在使用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仍在尝试确定代码块是否使用给定的语言(这是我想要首先避免的)。
答案 0 :(得分:3)
您正在迭代“预编码”元素吗?但是您在“code”标记中指定了该语言,而不是“pre”标记。 我有同样的问题,并在最顶层的元素上指定语言来解决问题。您的HTML代码应如下所示:
[
12,
[
{
"sql_ident" : 17,
"name" : "Billy Bob"
},
{
"sql_ident" : 935,
"name" : "Tina Turner"
}
]
]
还要确保'python'包含在您正在使用的highlight.js包中:)