Я повторяю текст из PHP для загрузки на мою страницу через вызов AJAX на моей странице HTML. Я хочу, чтобы 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>"
к тому же результату
из моего файла PHP на страницу не выделяется.
можно ли это исправить? Почему это происходит?
Если я правильно понял ваш вопрос, вы загружаете контент со страницы PHP с помощью Ajax.
При использовании highlight.js он будет проходить через ваш html и подсвечивать все после события «load», однако ваш Ajax-вызов происходит асинхронно после этого события, что означает, что контент загружается после того, как hightlight.js завершил свою передачу.
highlight.js имеет функция highlightBlock это вызовет проход подсветки кода, в вашем случае это будет выглядеть как следующая строка кода
hljs.highlightBlock(document.getElementById("resultDiv"));
который вы должны будете поставить после ваш контент добавлен в DOM
Других решений пока нет …