gpt4 book ai didi

javascript - 如何强制浏览器再次解析 MathML 内容?

转载 作者:行者123 更新时间:2023-11-29 19:54:14 26 4
gpt4 key购买 nike

具体来说(MathJax 不是我要找的)我有一个网页,里面有一些 MathML。“FireFox”浏览器可以很好地解析它,但是当我尝试通过 javascript 添加相同的代码时,它没有'解析它。如何通知浏览器重新解析网页内容?即使它是javascript以外的其他语言这是javascript代码:

    var b=document.createElement("math");
b.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");
var msup=document.createElement("msup");
var c=document.createElement("mi");
c.innerHTML="c";
var p=document.createElement("mn");
p.innerHTML="6";
msup.appendChild(c);
msup.appendChild(p);
b.appendChild(msup);
document.body.appendChild(b);

这是它生成的 HTML

    <math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mi>c</mi>
<mn>6</mn>
</msup>
</math>

最佳答案

您需要使用 document.createElementNS() 而不是 document.createElement() 才能在正确的命名空间中创建元素。事后设置 xmlns 属性实际上并没有这样做。所以这是一个对我有用的例子

<!DOCTYPE html>
<html>
<head>
<title>Test adding MathML</title>
</head>
<body>
<script>
var MML = "http://www.w3.org/1998/Math/MathML";
var b=document.createElementNS(MML,"math");
var msup=document.createElementNS(MML,"msup");
var c=document.createElementNS(MML,"mi");
c.appendChild(document.createTextNode("c"));
var p=document.createElementNS(MML,"mn");
p.appendChild(document.createTextNode("6"));
msup.appendChild(c);
msup.appendChild(p);
b.appendChild(msup);
document.body.appendChild(b);
</script>
</body>
</html>

我还将您对 innerHTML 的使用切换为使用 document.createTextNode() 以与您创建其他节点的方式保持一致。

关于javascript - 如何强制浏览器再次解析 MathML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16522765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com