2013-01-10 87 views
1

我有一个名为index.html的HTML文件,其中包含了一个svg(使用object-tag)和一个js文件(使用脚本标签)。在HTML文件中调用时,js函数都可以很好地工作。 现在,当我想访问我的svg文件中的一个js函数时,我必须链接到我的svg文件中的js文件(使用xlink)。这些函数在svg文件中仍然有效,但是一旦这些函数引用HTML文件中的任何元素(例如document.getElementById('div1')),它们就不再工作了(我的猜测:可能是因为函数不能寻找HTML内部的元素,但在SVG文件内) 我能做些什么来使这些功能再次起作用?SVG和带外部Javascript文件的HTML

+0

相似问题:http://stackoverflow.com/questions/14274252/combining-svg-html-and-javascript。 –

回答

0

当您将一个JS函数嵌入到SVG中时,它们总是在SVG的私有范围内执行,因此无法访问它以外的任何内容。

当你想创建一个带有动态SVG的交互式Web应用程序时,你应该把JS函数修改成HTML代码中的JavaScript代码。您可以通过获取<object>元素的.contentDocument来从嵌入HTML的JavaScript访问SVG文档树。

+0

使用时,svg是一个单独的文档,但只要父文档不是跨源文件,就可以访问svg以外的函数。从svg文档调用的'window.parent.document'为您提供了父html文档。 –

1

在现代浏览器中,您可以直接将svg直接放置在HTML中,并且JS(和CSS)可以在两者上无缝工作。

<div> 
    <svg:svg xmlns:svg="www.w3.org/2000/svg" version="1.1" height="100" width="100" viewBox="0 0 100 100"> 
    <svg:circle id="circle" cx="50" x="50" y="50"/> 
    </svg:svg> 
</div> 

<script> 
    document.getElementById("circle").style.fill="red"; 
</script>