0

関数を呼び出すときに、html ページにある svg ファイルにノードを追加する必要がありますpinta(strSVG)<object>この SVG ファイルは、タグの html ページに埋め込まれています

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>

無効な引数を返します

pinta(strSVG) への呼び出しは、Web ページの HTML にあります。

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 doc が含まれています。

"<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">" ......

問題は pinta が srtSVG を受信できないことです。srtSVG は pinta(srtSVG) 関数で定義されていません。

4

1 に答える 1

0

私はあなたが欲しいと思います

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

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

newNodeは単一の要素ではなく、潜在的に多くの要素を含む完全なドキュメントであり、appendChildはタグ名で単一の要素を追加するためだけのものです。

于 2013-02-05T17:43:54.907 に答える