Highlight.js 不适用于来自 PHP 的回显文本

Highlight.js not working for echo'ed text from PHP

我正在回显来自 PHP 的文本,通过我的 HTML 页面上的 AJAX 调用加载到我的页面上。我希望 Highlight.js 浏览此文本并为我突出显示语法。但是,它不会突出显示文本。当我直接在 HTML 页面上执行此操作时:

<pre>
    <code id=resultDiv style="text-align:right;">
       <p> int main() </p>
    </code>
</pre>

有效。 int main() 突出显示。然而,

echo 
    "int main()";

甚至

echo "<p> int main() </p>" 

相同的 resultDiv 从我的 PHP 文件到页面没有突出显示。

有解决办法吗?为什么会这样?

如果我没理解错你的问题,那么你正在使用 Ajax 从 PHP 页面加载内容。

当使用 highlight.js 时,它将 运行 通过你的 html 并突出显示 "load" 事件之后的所有内容,但是你的 Ajax 调用在此之后异步发生事件,这意味着内容在 hightlight.js 完成后加载。

highlight.js 有 highlightBlock function 会触发代码高亮传递,在你的情况下它看起来像下面的代码行

hljs.highlightBlock(document.getElementById("resultDiv"));

您必须在之后将您的内容添加到 DOM