如何从<object>元素?</object>引用的svg调用父文档中定义的函数

时间:2014-08-18 07:31:39

标签: javascript html svg

我曾经在我的网页上嵌入了一个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文件中定义的函数?怎么做?

1 个答案:

答案 0 :(得分:2)

我将您的问题解释为“如何从&lt; object&gt;元素引用的svg调用父html文档范围内定义的函数?”。从你的“onsel”函数定义的问题来看,有点不清楚,但我猜它是在html文档中的一个脚本中。

这是如何从svg内部调用到父级的example。父项中的函数打印单击了哪个元素以及引用它的元素。

从svg到父文档:

    window.parent.yourFunctionInParentDocument();