我编写了一个讨厌的小 javascript 函数,它创建了一个 MathML Matrix DOM。我的问题是,当我使用 jQuery 的 append(MathMLDOM) 插入 DOM 时;它没有正确显示。但是当我复制粘贴生成的 XML 并将其手动插入 HTML 文档时,它显示得很好。为什么不追加工作,有什么方法可以动态插入 MathML DOM?
问候
我编写了一个讨厌的小 javascript 函数,它创建了一个 MathML Matrix DOM。我的问题是,当我使用 jQuery 的 append(MathMLDOM) 插入 DOM 时;它没有正确显示。但是当我复制粘贴生成的 XML 并将其手动插入 HTML 文档时,它显示得很好。为什么不追加工作,有什么方法可以动态插入 MathML DOM?
问候
您是否附加了正确的 XML 命名空间?这对我有用:
$('#foo').append('<math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>a</mi><mi>i</mi></msup><mo>+</mo><mi>b</mi></math>')
没有命名空间,没有 MathML。
是的,您需要命名空间,它需要在元素创建时提供。文档对象的 createElementNS() 方法完成了这个:
document.createElementNS("http://www.w3.org/1998/Math/MathML", "element");
其中“element”是一个字符串,如“mo”、“mfrac”、“math”等。您可以将其包装在插入正确命名空间的函数中。无论如何,它可以在 Firefox 中运行。
var mathml = function(el) {
return document.createElementNS("http://www.w3.org/1998/Math/MathML", el);
};
之后您可以从中创建一个 jQuery 对象:
$mi1 = $( mathml("mi") ).text(a);
$mn1 = $( mathml("mn") ).text(2);
$term1 = $( mathml("msup") ).append($mi1).append($mn1);
会给你一个内容为2的 $term1 jQuery 对象。