簡體   English   中英

MathJax 未定義

[英]MathJax is not defined

通過將 MathJax 推薦的命令粘貼到我網頁的<head>元素中,我已成功加載和配置了 MathJax。 MathJax 在我網頁的<body>中渲染 LaTex 做得很好。

我的問題是使用<body>元素最后運行的 javascript 訪問MathJax對象。 例如,下面的代碼將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屬性加載MathJax.js 因此,瀏覽器在腳本加載之前不會阻止渲染,而是繼續處理頁面。 因此,現在您在獲取和加載MathJax.js與瀏覽器的解析器獲取頁面中更下方的script標記之間MathJax.js競爭。 不可避免地,解析器會在MathJax.js完成加載之前獲勝並執行日志。 因此,沒有全局MathJax對象。

如果刪除async ,則瀏覽器將在解析剩余頁面之前首先執行MathJax.js ,因此console.log將提供一些有意義的信息。 (同樣,在不支持async屬性的舊瀏覽器上,您會得到一個結果。)

但是請注意,MathJax 本身是高度異步的(加載附加組件、配置等),因此您很可能需要將您的代碼與 MathJax 的 API 同步

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM