所以,基本上我想要做的是有一个 Chrome 扩展来正确呈现 MathML 表达式(我已经尝试过“MathJax for Chrome”扩展,但它对我不起作用)。
我最初的计划是在head
节点中添加一个指向 MathJax 代码的链接,但这不起作用(我假设是因为它是在页面加载后添加的)。
我目前的计划是将每个 MathML 对象替换为iframe
引用 MathJax 代码并且仅包含原始 MathML 对象的对象。由于iframe
的 HTML 基于原始的 MathML 元素,因此我使用了该srcdoc
属性。这是我当前的脚本:
$(document).ready(function() {
$("math").each(function(index, obj) {
// create an inline frame to replace the math element
var iframe = document.createElement("iframe");
var html = '<html><head><script type="text/javascript" src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></head>';
html += '<body>';
// http://stackoverflow.com/questions/2419749/get-selected-elements-outer-html
html += $(obj).clone().wrap('<p>').parent().html();
html += '</body></html>';
$(iframe).attr("srcdoc", html);
iframe.textContent = "FOO";
$(obj).replaceWith(iframe);
});
});
这适用于非 XHTML 页面,例如 Mozilla 的 MathML“酷刑测试”,但对于 XHTML(甚至是过渡)我只得到"FOO"
文本。
iframe
为了让s 为 XHTML Transitional 工作,我还需要做些什么吗?还是有更好的方法来实现我想要的?