[英]MathJax with WebPack ReferenceError: require is not defined
[英]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.