動的に生成された SVG があり、要素の 1 つの現在の座標を見つける必要があります。SVG のドキュメントによると、これは getCMT() 関数で実行できます。これを JavaScript で動作させることができませんでした。以下は、コード フラグメントの例です。
thing = document.getElementById("#bx" + myState.myId);
matrix = thing.getCTM();
「g」要素である SVG 要素を正しく選択したため、変換行列が含まれています。マトリックスを取得しようとすると、「null」が返されます。これは単純な作業なので、うまくいかないのは非常に不可解です。例を探すのに時間を費やしましたが、それらはすべて、HTML に直接読み込まれた静的 SVG を使用しているようです。私は何が欠けていますか?
getBBox() でもこれを試しましたが、同じ結果が得られました。現在の FireFox リリースを使用しています。
問題が何であるかがわかりました。可視性属性と組み合わせて getElementById を使用していました。SVG 構造のルートで可視性を非表示に設定し、ネストされた g 要素で可視性属性を可視に設定していました。中間ノードが表示されていない場合、getElementById 関数は null を返します。可視性を変更する前に getElementbyId を呼び出すと、機能するようになりました。
これを見つけた場所への参照は次のとおりです: https://bugzilla.mozilla.org/show_bug.cgi?id=756985
詳細は、SVG が添付されているかどうかに関係しています。添付されていない場合は、すべてが表示されている必要があります。アタッチされている場合は、非表示/表示を使用できます。
回答者に感謝します。FireFox では、getElementId 引数の先頭に「#」があっても違いはありませんでしたが、正しい構文を知っておくと役に立ちます。ありがとう。