MathJax 未定义
MathJax is not defined
通过将 MathJax 推荐的命令粘贴到我网页的 <head>
元素中,我已成功加载和配置 MathJax。 MathJax 在我网页的 <body>
中渲染 LaTex 做得很好。
我的问题是在 <body>
元素的末尾使用 javascript 运行 访问 MathJax
对象。例如,下面的代码 returns undefined
到控制台。这让我感到困惑 - 我在 <head>
元素中的命令不应该创建 MathJax
作为可以在任何地方访问的全局变量吗?
这是我的代码的屏幕截图:
这是 <head>
元素中的相关代码部分:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\(','\)']]}});
</script>
<script type="text/javascript" async
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
这是 <body>
元素中的相关代码部分:
<h1 class="header">
If $ax^2+bx+c=0$, then $x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$.
</h1>
<script type="text/javascript" >
console.log(window.MathJax);
</script>
您正在使用 async
attribute 加载 MathJax.js
。因此,浏览器在脚本加载之前不会阻止呈现,而是继续处理页面。所以现在你在获取和加载 MathJax.js
与浏览器的解析器获取页面更下方的 script
标记之间进行了一场竞赛。不可避免地,解析器会在 MathJax.js
完成加载之前获胜并执行日志。因此,没有全局 MathJax
对象。
如果您删除 async
,那么浏览器将首先执行 MathJax.js
,然后再解析剩余的页面,因此 console.log
将提供一些有意义的内容。 (同样,在不支持 async
属性的旧浏览器上,您将得到一个结果。)
但是请注意,MathJax 本身是高度异步的(加载其他组件、配置等),因此您很可能需要 synchronize your code with MathJax's APIs。
通过将 MathJax 推荐的命令粘贴到我网页的 <head>
元素中,我已成功加载和配置 MathJax。 MathJax 在我网页的 <body>
中渲染 LaTex 做得很好。
我的问题是在 <body>
元素的末尾使用 javascript 运行 访问 MathJax
对象。例如,下面的代码 returns undefined
到控制台。这让我感到困惑 - 我在 <head>
元素中的命令不应该创建 MathJax
作为可以在任何地方访问的全局变量吗?
这是我的代码的屏幕截图:
这是 <head>
元素中的相关代码部分:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\(','\)']]}});
</script>
<script type="text/javascript" async
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
这是 <body>
元素中的相关代码部分:
<h1 class="header">
If $ax^2+bx+c=0$, then $x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$.
</h1>
<script type="text/javascript" >
console.log(window.MathJax);
</script>
您正在使用 async
attribute 加载 MathJax.js
。因此,浏览器在脚本加载之前不会阻止呈现,而是继续处理页面。所以现在你在获取和加载 MathJax.js
与浏览器的解析器获取页面更下方的 script
标记之间进行了一场竞赛。不可避免地,解析器会在 MathJax.js
完成加载之前获胜并执行日志。因此,没有全局 MathJax
对象。
如果您删除 async
,那么浏览器将首先执行 MathJax.js
,然后再解析剩余的页面,因此 console.log
将提供一些有意义的内容。 (同样,在不支持 async
属性的旧浏览器上,您将得到一个结果。)
但是请注意,MathJax 本身是高度异步的(加载其他组件、配置等),因此您很可能需要 synchronize your code with MathJax's APIs。