Хорошо, если вы удалите третий сценарий из html и добавите его позже в отложенную функцию, например:
setTimeout(() => {
var script = document.createElement('script');
script.src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js";
script.type = "text/javascript";
script.id = "MathJaz-script";
script.async = true;
document.getElementsByTagName('head')[0].appendChild(script);
}, 5000)
Это работает. Это покажет фактический текст, а затем, после задержки, преобразует его в MathJax. Если вы не хотите, чтобы текст отображался перед отрисовкой, вы можете установить его в функции тайм-аута после добавления скрипта.
Ваш HTML:
<html>
<head>
<title>MathJax Test</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
}
</script>
</head>
<body>
<div id="div1">
</div>
</body>
</html>
Ваш JS:
window.addEventListener('DOMContentLoaded', (event) => {
var para = document.createElement("p");
var element = document.getElementById("div1");
para.innerText = '$x=x^2+1$'
element.appendChild(para)
setTimeout(() => {
var script = document.createElement('script');
script.src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js";
script.type = "text/javascript";
script.id = "MathJaz-script";
script.async = true;
document.getElementsByTagName('head')[0].appendChild(script);
}, 5000)
})