jQuery TypeError:在Firefox 20.0中加载svg文件时,未定义a.style

时间:2013-04-07 11:18:25

标签: jquery firefox svg

我使用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>

2 个答案:

答案 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应该避免这里的错误。

这解决了我的问题!

注意:更改第三方代码不是一个好习惯,但我现在还没有找到更好的解决方案。