当我调用函数pinta(strSVG)
时,我需要将一个节点添加到html页面上的svg文件中。
此SVG文件嵌在<object>
标记
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)的调用在网页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。在pinta(srtSVG)函数上未定义srtSVG。
答案 0 :(得分:0)
我想你想要
var doc = new DOMParser().parseFromString(xmlDoc.documentElement, 'application/xml');
document.getElementById('grafico1').appendChild(
document.getElementById('grafico1').ownerDocument.importNode(doc.documentElement, true));
newNode不是单个元素,它是包含潜在多个元素的完整文档,而appendChild仅用于通过其标记名称添加单个元素。