Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MathJax未处理包含的外部文件_Javascript_Html_Mathjax - Fatal编程技术网

Javascript MathJax未处理包含的外部文件

Javascript MathJax未处理包含的外部文件,javascript,html,mathjax,Javascript,Html,Mathjax,我想在html文件中包含一个外部文件,该文件包含MathJax应该处理的数学内容。我尝试了几种方法来实现这一点,当外部文件包含在html文件中时,其中的数学内容不会被处理。一个简单的例子来说明这一点: tst.html: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax

我想在html文件中包含一个外部文件,该文件包含MathJax应该处理的数学内容。我尝试了几种方法来实现这一点,当外部文件包含在html文件中时,其中的数学内容不会被处理。一个简单的例子来说明这一点:

tst.html:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
  </head>
  <body>
    This displays correctly: \(\phi\). 
    <inc></inc>
    <script>
     fetch("./tst.txt")
       .then(response => {
         return response.text()
       })
       .then(data => {
         document.querySelector("inc").innerHTML = data;
       });
    </script>
    <div id="abc"></div>
    <div id="def">
      <script>$("#def").load("tst.txt");</script>
    </div>
    <script>
     $(function(){
       $('#abc').load('tst.txt');
     });
    </script>
  </body>
</html>

在浏览器中,html文件中的数学内容将正确显示,但不会显示在包含文件的文本中。是否有办法正确处理外部文件中的数学内容?

问题可能在于,只有在MathJax渲染数学之后,才会将文件拉入页面。因此,您需要“要求”MathJax在页面中搜索更多的数学并呈现新的数学

来自MathJax文档:

如果您正在编写一个动态网页,其中包含数学的内容可能会在MathJax对该网页的其余部分进行排版后出现,那么您需要告诉MathJax在生成新内容时再次在该网页中查找数学。为此,需要使用MathJax.typeset()方法。这将导致MathJax在页面上查找未处理的数学并对其进行排版,保留已排版的任何数学不变


我的回答解决了您的问题吗?我查看了MathJax文档,了解如何动态加载页面。似乎这个问题可能正如你所建议的,但我最初的尝试,即使是他们提供的例子,似乎也不起作用,但我会进一步检查,如果有效,我会接受你的答案。到目前为止,我的尝试是包括以下内容:```MathJax.typeset(()=>{const math=document.querySelector('#math');math.innerHTML='$$\\\frac{a}{1-a^2}$';return math;})``但是显示的页面没有变化。当页面完全加载后,在控制台中运行
MathJax.typeset()
,是否会呈现数学?
\(\phi = 0\)