1

我一直在使用 Raphael SVG/VML 库,网站声明它支持 Firefox 3.0+。

然而,我在使用最新版本的 Raphael 和 jQuery 1.8.3 时遇到了问题。

例如,我能够创建一张纸var paper = Raphael('divID',500,500);并在这张纸上创建形状var rect1 = paper.rect(0,0,100,100);

当我尝试获取此矩形的边界框时,就会出现问题。在控制台中我得到一个this.join is not a function

我在创建路径时也遇到了同样的问题。

从我所见,这似乎是 getBBox 函数或 pathToString 函数的问题。有没有人遇到过这个问题,有没有人知道我可以改变什么来解决这个问题?

编辑:我特别询问 3.0.12 的原因是我的客户别无选择,只能在该浏览器上运行,不幸的是。

4

1 回答 1

1

问题出clone在 Raphael 库中的函数内部。此函数在旧版本的 Firefox 中无法正确克隆函数。一种解决方案是修改代码以返回函数而不克隆它们(就像使用简单的 JavaScript 类型一样)

因此,Raphaelclone函数的最终代码将如下所示:

function clone(obj) {
    if (Object(obj) !== obj || typeof obj === 'function') {
        return obj;
    }
    var res = new obj.constructor;
    for (var key in obj) if (obj[has](key)) {
        res[key] = clone(obj[key]);
    }
    return res;
}

我希望这不会破坏任何东西。

于 2012-12-08T17:33:50.550 回答