2012-02-14 48 views
1

我使用importNode()方法將幾個元素添加到現有的SVG文檔中;一切似乎都很好;可以使用getElementsByTagName [getElementById() is not working]獲取新添加的元素,但問題是導入的元素沒有被識別爲SVGGElements,而是像[object Element]一樣被提及。任何想法傢伙?在IE9中,導入的節點似乎不被識別爲SVG元素

+0

SVG命名空間中的節點? – 2012-02-14 21:14:23

+0

@ Robert,我在xml文件中新增了元素,如 2012-02-15 07:36:22

回答

2

xml文件中的元素需要定義它們所在的名稱空間,否則它們會被解析爲未知的xml元素。

即使xml文件的根是一個< svg>元素,情況也是如此。爲了確保將元素解析爲正確的svg元素,您應該添加xmlns="http://www.w3.org/2000/svg"並可能添加xmlns="http://www.w3.org/1999/xlink(如果您在文件的任何位置使用xlink屬性)。

如果另一方面使用html5解析器解析元素,則約束類似但略有不同,因爲xmlns屬性無法在html中識別(僅在xhtml中)。在這種情況下,至少需要使用svg>元素根目錄作爲svg解析,並且需要確保將標記檢測爲html5(避免使用任何特定於瀏覽器的傳統回退模式) 。所以如果你使用html5解析器,你不可能有一個< g>元素作爲根。