我想让MathJax在iframe中呈现。 Here is a fiddle举了一个简单的例子。你可以看到" MathJax loading"运行小提琴时底部的横幅,但iframe中的文本未呈现。 (应该像附加的图像一样呈现)。
我的代码转载于此:
HTML:
$my_array = $array_data;
print_r($my_array);
//Here it showed the array like the above
foreach($my_array as $array_key) {
foreach( $array_key as $array_value) {
var_dump($array_value);
}
}
的javascript:
<iframe id="my-frame" srcdoc="<div>This is \(\mu_s\). </div>">
我查看了SO question here,但我的情况似乎有所不同(因为我在iframe中调用MathJax Typeset)。同样,this old Google thread表示我需要在iframe中加载MathJax脚本,我已经在做了。 MathJax docs表示在尝试排队动态内容的渲染时我应该调用var mathJax = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full',
script = document.createElement('script'),
initScript = document.createElement('script');
script.type = 'text/javascript';
script.src = mathJax;
initScript.type = 'text/javascript';
initScript.text = '$(document).on("ready", function () {MathJax.Hub.Queue(["Typeset",MathJax.Hub]);});';
$('#my-frame').contents().find('head').append(script);
$('#my-frame').contents().find('body').append(initScript);
,我正在做(虽然我怀疑我可能不需要手动排队排版?)。 MathJax加载在每个iframe的MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
脚本as recommended。
不太确定还有什么可以尝试,任何帮助将不胜感激。我在控制台中看到的错误是<head>
,这让我觉得它在iframe中没有正确加载...
谢谢!
答案 0 :(得分:1)
您的代码存在一些问题。首先,你不需要initScript
,因为MathJax会自动运行一次(即使你这样做了,因为jQuery没有加载到iframe中,你无论如何都不能$(document).on()
)。此外,您应该在iframe的文档中创建脚本元素,而不是外部文档(它们不相同)。
否则,你是在正确的轨道,但事实证明,jQuery以某种方式搞砸了你。 append()
调用做了一些有趣的事情,MathJax最终在外部窗口运行,而不是内部窗口。我不确定这是怎么回事,但解决方案是使用常规appendChild()
方法而不是jQuery。所以,如果你使用
var doc = $('#my-frame').contents()[0];
var script = doc.createElement('script');
script.type = 'text/javascript';
script.src = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full';
// $('#my-frame').contents().find('head').append(script); // this is the line that is causing trouble.
doc.head.appendChild(script);
它应该对你有用(它对我有用)。
答案 1 :(得分:0)
我通过编辑源文档本身来完成这项工作,而不是在事后注入MathJax ...... working fiddle.
<iframe id="my-frame" srcdoc="<html><head><script src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full'></script></head><body><div>This is \(\mu_s\). </div></body></html>">