Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 16th, 2012  |  syntax: None  |  size: 1.16 KB  |  hits: 22  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Import SVG node into another document in IE9
  2. var xhr = new XMLHttpRequest;
  3. xhr.open('get','stirling4.svg',true);
  4. xhr.onreadystatechange = function(){
  5.   if (xhr.readyState != 4) return;
  6.   var g = xhr.responseXML.getElementsByTagName('g')[2];
  7.   var p = document.getElementsByTagName('path')[0];
  8.   p.parentNode.insertBefore(document.importNode(g,true),p);
  9. };
  10. xhr.send();
  11.        
  12. var xhr = new XMLHttpRequest;
  13. xhr.open('get','stirling4.svg',true);
  14. xhr.onreadystatechange = function(){
  15.   if (xhr.readyState != 4) return;
  16.   var g = xhr.responseXML.getElementsByTagName('g')[2];
  17.   var p = document.getElementsByTagName('path')[0];
  18.   p.parentNode.insertBefore(cloneToDoc(g),p);
  19. };
  20. xhr.send();
  21.  
  22. function cloneToDoc(node,doc){
  23.   if (!doc) doc=document;
  24.   var clone = doc.createElementNS(node.namespaceURI,node.nodeName);
  25.   for (var i=0,len=node.attributes.length;i<len;++i){
  26.     var a = node.attributes[i];
  27.     clone.setAttributeNS(a.namespaceURI,a.nodeName,a.nodeValue);
  28.   }
  29.   for (var i=0,len=node.childNodes.length;i<len;++i){
  30.     var c = node.childNodes[i];
  31.     clone.insertBefore(
  32.       c.nodeType==1 ? cloneToDoc(c,doc) : doc.createTextNode(c.nodeValue),
  33.       null
  34.     );
  35.   }
  36.   return clone;
  37. }