加载 JavaScript 后加载 Mathjax



这是我简单的HTML代码

<html>
<head>
<script type="text/javascript"
 src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script>
function gup( name )
{
  name = name.replace(/[[]/,"\[").replace(/[]]/,"\]");
  var regexS = "[\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
</script>
</head>
<body>
<p>This is the line that load correct  [ frac{x+y}{z} ]</p>
<p id="step1"></p>
<script>
var x = gup('x');
var y = gup('y');
var z = gup('z');
var text = "This is the line that NOT show correct" + "[ frac{" + x + " + " + y + "}{" + z +"}]";
document.getElementById("step1").innerHTML= text;
</script>
</body>
</html>

当我加载此 html 文件并通过 url 发送参数时,例如

sample.html?x=1&y=2&z=3

第一句话显示了正确的形式和加载Mathjax但第二句话不是。 这是因为Mathjax在 Java 脚本代码之前加载。 你知道Javascript后怎么加载Mathjax吗?

您可以尝试使用带有回调的 JavaScript 加载器来加载 MathJax 并在回调中运行代码。例如,请参阅 https://github.com/niftylettuce/javascript-async-callback。

编辑:

<html>
<head>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script>
function gup( name )
{
  name = name.replace(/[[]/,"\[").replace(/[]]/,"\]");
  var regexS = "[\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
</script>
<script>
$(function() {
  var x = gup('x');
  var y = gup('y');
  var z = gup('z');
  var text = "This is the line that NOT show correct <-- It's OK now" + "\[ \frac{" + x + " + " + y + "}{" + z +"} \]";
  document.getElementById("step1").innerHTML= text;
});
</script
</head>
<body>
<p>This is the line that load correct  [ frac{x+y}{z} ]</p>
<p id="step1"></p>
</body>
</html>
如果在 MathJax 运行

后修改文档以添加数学,则需要告诉 MathJax 再次运行。 你这样做使用

<script>
  MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
</script>

有关详细信息,请参阅相关的 MathJax 文档。

在您的情况下,这应该可以做到:

<script>
var x = gup('x');
var y = gup('y');
var z = gup('z');
var text = "This is the line that NOT show correct" + "[ frac{" + x + " + " + y + "}{" + z +"}]";
document.getElementById("step1").innerHTML= text;
MathJax.Hub.Queue(["Typeset",MathJax.Hub,"step1"]);
</script>

最新更新