MathML Matrix DOM を作成する厄介な小さな JavaScript 関数のスクリプトを作成しました。私の問題は、jQuery の append(MathMLDOM); で DOM を挿入するときです。正しく表示されていません。しかし、生成された XML をコピーして HTML ドキュメントに手動で挿入すると、問題なく表示されます。追加が機能しないのはなぜですか? MathML DOM を動的に挿入する方法はありますか?
よろしく
MathML Matrix DOM を作成する厄介な小さな JavaScript 関数のスクリプトを作成しました。私の問題は、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");
「要素」は、「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 オブジェクトが得られます。