我使用SVG文件。 SVG文件有xlink-ed jQuery。
在Firefox 20.0中打开svg文件时出现错误
TypeError:a.style未定义
如果我在Firefox 19及更早版本中打开svg文件,则不会出现错误。
为什么jQuery与svg无法在FF20.0中运行?
我的SVG演示文件
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="467" height="462">
<rect x="80" y="60" width="250" height="250" rx="20"
style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
<rect x="140" y="120" width="250" height="250" rx="40"
style="fill:#0000ff; stroke:#000000; stroke-width:2px;
fill-opacity:0.7;" />
<script
xlink:href="http://code.jquery.com/jquery-1.9.1.js"
id="script10"
type="text/javascript" />
</svg>
答案 0 :(得分:2)
这是因为jQuery假设它基本上是在HTML文档中运行。见http://bugs.jquery.com/ticket/13754
答案 1 :(得分:0)
正如@Boris在另一个答案中所说,这是由于一个jquery错误。
在this link中,您可以看到有关它的更多信息。
其中一条评论建议如下(在jquery-1.9.1中):
在jquery-1.9.1中,第1321行,从更改:
if ( !all || !a || !all.length ) {
要这个:
if (!all || !a || !all.length || !a.style) {
他的解释:
这应该导致jQuery.support函数返回{}(空 对象),因为它似乎在其他浏览器上。在FF19中,“!a”进行评估 为真。在FF20中,“!a”的计算结果为false,但a.style未定义。所以 检查!a.style应该避免这里的错误。
这解决了我的问题!
注意:更改第三方代码不是一个好习惯,但我现在还没有找到更好的解决方案。