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

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

最佳答案

您是在迭代“前代码”元素吗?但是您在“code”标签而不是“pre”标签中指定了语言。 我遇到了同样的问题,并在最上面的元素上指定语言解决了这个问题。您的 html 代码应如下所示:

<pre class="python">
<code>
print "Hello"
</code>
</pre>

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

关于javascript - 使用highlight.js时如何指定语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122530/

相关文章:

javascript - 函数式 Javascript BaconJS,如何将更多值推送到事件流?

javascript - 在浏览器窗口中更改 d3 svg 框的位置

html - 在 span css 后隐藏标签

javascript - 脚本标记上的 defer 属性使我的脚本太长而无法加载

Perl 高亮引号分隔符问题 - 在哪里可以找到解决此问题的语法/perl.vim?

r - 语法高亮规则和定义

c++ - Visual Studio 2010 中好的 C++ 主题的集合?

javascript - ASP.NET ScriptBundle 不适用于 .min.js?

html - Bootstrap margin-bottom 在小型设备上不起作用

javascript - 在浏览器中通过本地 DirectShow 播放 Videograbber 输入