1

我编写了一个讨厌的小 javascript 函数,它创建了一个 MathML Matrix DOM。我的问题是,当我使用 jQuery 的 append(MathMLDOM) 插入 DOM 时;它没有正确显示。但是当我复制粘贴生成的 XML 并将其手动插入 HTML 文档时,它显示得很好。为什么不追加工作,有什么方法可以动态插入 MathML DOM?

问候

4

2 回答 2

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。

于 2012-11-29T08:32:23.130 回答
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);

会给你一个内容为2的 $term1 jQuery 对象。

于 2014-01-27T18:19:38.650 回答