MathJax 不适用于 iFrame

MathJax not working with iFrame

我正在尝试通过点击事件在 iFrame 上调用 MathJax 函数。这是代码

html

<body onLoad="ifon();">
    <iframe name="richTextField" id="richTextField" style="border:#000000 1px solid; width:700px; height:300px;"></iframe>
<button onclick="refresh();"></button>
</body>

javascript

function ifon(){ 
    richTextField.document.designMode = 'On'; 
}
function refresh(){
    var richTextField = document.getElementById("richTextField");
    if(richTextField != null) {
        var get_iframe_text = richTextField.contentWindow.document.body.innerHTML;
        if(get_iframe_text.slice(-6) == "$$<br>"){
            //Trying to call MathJax on iFrame
            MathJax.Hub.Queue(["Typeset",MathJax.Hub,richTextField]);
            alert("Success");
        }
    }
}

只有最后六个字符是$$<br>

才会执行嵌套if条件的refresh()

任何人都可以帮助我如何在 iFrame 上调用 MathJax.Hub.Queue([]) 吗?

您不能从 iframe 外部使用 MathJax 来处理 iframe 中的数学。您需要在 iframe 本身中加载 MathJax。如果需要,您仍然可以从外部触发 MathJax,方法是调用 iframe 内的 MathJax,前提是内容来自与容器相同的域。否则,您需要设置事件侦听器并使用 postMessage 与 iframe 通信。

我终于找到了解决这个问题的方法。 只需将 iFrame 替换为 HTML5 ContentEditale Div。

现在一切正常...