我编写了一个讨厌的小javascript函数,它创建了一个MathML Matrix DOM。我的问题是当我用jQuery的追加(MathMLDOM)插入DOM时;它没有正确显示。但是当我复制粘贴生成的XML并将其手动插入HTML文档时,它显示得很好。为什么不附加工作,有没有办法动态插入MathML DOM?
问候
答案 0 :(得分:1)
您是否附加了正确的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。
答案 1 :(得分:1)
是的,您需要命名空间,需要在元素创建时给出。文档对象的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);
会给你一个$ term1 jQuery对象,其内容为 2 。