2013-02-05 5 views
0

pinta(strSVG) 함수를 호출 할 때 html 페이지에있는 svg 파일에 노드를 추가해야합니다. 이 SVG 파일이 <object> 태그를 HTML 페이지에 포함되어자바 스크립트를 사용하여 SVG 문서를 SVG 문서에 추가

SVG 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" height="100%" width="100%" onload="inicia(evt)" > 

<script type="text/ecmascript"><![CDATA[  

parent.pinta=pinta 

function inicia(event){ 
    SVGDocument = event.target.ownerDocument;         
} 

function pinta(strSVG){ 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(strSVG); 
    var newNode=xmlDoc.element; 
    SVGDocument.getElementById('grafico1').appendChild(newNode); 
} 
]]></script> 
<svg y="" width="" height="" id="grafico1"/> 
<svg y="500" width="" height="" id="grafico2"/> 
<g id="tip_Cuadro"/> 
<g id="tip_texto"/> 
</svg> 

가 잘못된 인수

핀타 (strSVG)에 대한 호출을 반환은 웹 페이지의 HTML에 :

0,123,726 :
var object = document.getElementById('tbl27svg'); 
var svgdoc = object.contentDocument; 
if (svgdoc && svgdoc.defaultView) 
    svgwin = svgdoc.defaultView; 
    else if (object.window) 
     svgwin = object.window; 
     else try { 
     svgwin = object.getWindow(); 
     } 
    catch(exception) { 
    alert('The DocumentView interface is not supported\r\n' + 
      'Non-W3C methods of obtaining "window" also failed'); 
    } 
svgwin.pinta(str); 

STR은 완전한 SVG의 문서를 포함

문제는 핀타가 srtSVG를받을 수 없다는 것입니다. srtSVG는 pinta (srtSVG) 함수에서 정의되지 않았습니다.

답변

0

난 당신이

var doc = new DOMParser().parseFromString(xmlDoc.documentElement, 'application/xml'); 

document.getElementById('grafico1').appendChild(
document.getElementById('grafico1').ownerDocument.importNode(doc.documentElement, true)); 

newNode가 잠재적으로 많은 요소를 포함하는 전체 문서의과에 appendChild는 태그 이름으로 하나의 요소를 추가만을위한 하나의 요소 아니다 싶은 생각합니다.

+0

감사합니다. Robert. 하지만 : DOM 예외 : SYNTAX_ERR (12)'var doc = new DOMParser(). parseFromString (xmlDoc.documentElement, 'application/xml');'IE9에서는 유효하지 않습니다 ... xmlDoc.loadXML (strSVG); ', ?? – deimos1975

+0

http://blogs.msdn.com/b/ie/archive/2010/10/15/domparser-and-xmlserializer-in-ie9-beta.aspx –

+0

예, 문제는 보낼 수 없다고 생각합니다. strSVG 매개 변수를 통해 SVG 문서를 가져옵니다. 왜냐하면 내가 만든다면 : alert (srtSVG) 나는 정의되지 않은 srtSVG .... – deimos1975

관련 문제