使用highlight.js时如何指定语言?

时间:2014-06-09 14:33:31

标签: javascript html syntax-highlighting highlight.js

我正在使用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仍在尝试确定代码块是否使用给定的语言(这是我想要首先避免的)。

1 个答案:

答案 0 :(得分:3)

您正在迭代“预编码”元素吗?但是您在“code”标记中指定了该语言,而不是“pre”标记。 我有同样的问题,并在最顶层的元素上指定语言来解决问题。您的HTML代码应如下所示:

[
   12,
   [
      {
        "sql_ident" : 17,
        "name" : "Billy Bob"
      },
      {
        "sql_ident" : 935,
        "name" : "Tina Turner"
      } 
   ]
] 

还要确保'python'包含在您正在使用的highlight.js包中:)