IE can not outerHTML an SVGElement.
Also it add some NS stuff if its extracted via Serializer or in my case Tag clone.
Here is an outerHTML prototype for SVGElement - should only be done in IE:
if (!(detectIE() === false)) {
Object.defineProperty(SVGElement.prototype, 'outerHTML', {
get: function () {
var $node, $temp;
$temp = document.createElement('div');
$node = this.cloneNode(true);
$temp.appendChild($node);
var ret = $temp.innerHTML;
// cleanup for IE
ret = ret.replace(new RegExp('NS\\d+:xmlns:xml="http://www.w3.org/XML/1998/namespace"', 'gi'), "");
ret = ret.replace(new RegExp('NS\\d+:xmlns:ns\\d+="http://www.w3.org/XML/1998/namespace"', 'gi'), "");
ret = ret.replace(new RegExp('xmlns:ns\\d+="http://www.w3.org/XML/1998/namespace"', 'gi'), "");
ret = ret.replace(new RegExp('xml:', 'gi'), "");
ret = ret.replace(new RegExp('ns\\d+:', 'gi'), "");
ret = ret.replace(new RegExp('xmlns:xml="http://www.w3.org/XML/1998/namespace"', 'gi'), "");
ret = ret.replace(new RegExp('NS\\d+:ns\\d+:', 'gi'), "");
ret = ret.replace(new RegExp('xmlns:NS\\d+=""', 'gi'), "");
return ret;
},
enumerable: false,
configurable: true
});
}
IE can not outerHTML an SVGElement.
Also it add some NS stuff if its extracted via Serializer or in my case Tag clone.
Here is an outerHTML prototype for SVGElement - should only be done in IE: