我曾经在我的网页上嵌入了一个svg文件:
<object id="svgmap" width="100%" height="100%" data="<%=path %>/svg/map.svg" type="image/svg+xml" style="">
</object>
然后我使用名为&#34; support.js&#34;的外部javascript文件将一些图像标签添加到此svg文件中:
var marker = document.createElementNS(xmlns, 'image');
marker.setAttributeNS(null, 'id', "img_0123");
marker.setAttributeNS('http://www.w3.org/1999/xlink', 'href', iconurl);
marker.setAttributeNS(null, 'x', posX);
marker.setAttributeNS(null, 'y', posY);
marker.setAttributeNS(null, 'visibility', 'visible');
marker.setAttribute("onclick", "onsel('0123')");
这&#34; onsel&#34;函数也在support.js中定义,所以当我点击图像时,它会变为另一个图像。现在,当我在浏览器(Opera,Mozilla和Chrome)中浏览此页面时,当我点击图像时,它并没有交换到另一个图像,而在开发人员工具的控制台中,它说&#34; referenceerror:onsel未定义svgmap:1&#34;。
这是否意味着svg文件无法使用其他javascript文件中定义的函数?怎么做?
答案 0 :(得分:2)
我将您的问题解释为“如何从&lt; object&gt;元素引用的svg调用父html文档范围内定义的函数?”。从你的“onsel”函数定义的问题来看,有点不清楚,但我猜它是在html文档中的一个脚本中。
这是如何从svg内部调用到父级的example。父项中的函数打印单击了哪个元素以及引用它的元素。
从svg到父文档:
window.parent.yourFunctionInParentDocument();