【问题标题】:Highlight.js not working for echo'ed text from PHPHighlight.js 不适用于来自 PHP 的回显文本
【发布时间】:2017-04-21 05:40:17
【问题描述】:

我正在回显来自 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 文件到页面没有被突出显示。

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

【问题讨论】:

  • @stackundeflow 请原谅我歪曲了后续 HTML 的格式(例如通过echo)...我想改进格式

标签: javascript php html highlight.js


【解决方案1】:

如果我理解您的问题,您正在使用 Ajax 从 PHP 页面加载内容。

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

highlight.js 有 highlightBlock function 将触发代码高亮传递,在您的情况下,它将类似于以下代码行

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

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

【讨论】:

  • 成功了,谢谢!最初,我尝试做一个 initHighlighting(),但由于某种原因没有奏效。我很高兴 highlightBlock 有效!
  • 那是因为 initHighlighting() 只将高亮传递绑定到加载事件,所以当该事件已经发生时什么都不会发生
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 2014-11-20
  • 2011-08-21
相关资源
最近更新 更多