I am using this method to import an SVG doc into a page, and it works pretty well, but in IE9, none of the <image>
tags work after the import (they show up as broken images, even though their xlink:href
attribute is correct). Why does this happen, and is there any way around it? Here's a simple test page. It works fine in Chrome, FF, etc, but not in IE9.
Asked
Active
Viewed 1,189 times
3
2 Answers
5
Apparently if I drop the xlink:
and just use href
, if fixes the problem in IE9, but breaks it in Chrome, etc. Weird! If anyone knows why, I'd be happy to accept your answer. See test 2.
Adding href
, in addition to xlink:href
fixes the issue everywhere.

lakenen
- 3,436
- 5
- 27
- 39
-
Thanks for adding the _real_ fix! It worked for me too... `` – Larz Feb 18 '16 at 15:31
2
The js implementation of importNode
provided in this answer doesn't properly set namespaced attributes, it should use setAttributeNS
to set xlink:href
correctly. This other implementation of importNode seems to handle that, have you tried using that one instead?

Community
- 1
- 1

Erik Dahlström
- 59,452
- 12
- 120
- 139
-
I did try that, but it gives `SCRIPT5022: DOM Exception: NAMESPACE_ERR (14)` on the line `clone.setAttributeNS(a.namespaceURI,a.nodeName,a.nodeValue);`. – lakenen Jan 30 '13 at 21:48
-
I'm guessing that's about the xmlns:xlink attribute? or is that for any prefixed attribute? – Erik Dahlström Jan 31 '13 at 08:01
-
-
After further inspection, it seems to throw that error only on the actual ` – lakenen Jan 31 '13 at 19:10
-
I'm accepting your answer, because I think you're correct. Though, I'm still confused as to why those attributes are causing namespace errors. – lakenen Feb 01 '13 at 18:47