Safari上的JS Bug:意外的令牌'='

时间:2012-01-12 23:08:45

标签: javascript safari

我正在使用jsio(jslibs - http://code.google.com/p/jslibs/wiki/jsio)并且遇到了Safari上的一个错误。 意外的令牌'='

问题在于这部分代码。

this.debugPath = function(path) { return path; }

// IE6 won't return an anonymous function from eval, so use the function constructor instead
var rawEval = (typeof eval('(function(){})') == 'undefined')
            ? function(src, path) { return (new Function('return ' + src))(); }
            : function(src, path) { var src = src + '\n//@ sourceURL=' + path; return window.eval(src); };

// provide an eval with reasonable debugging
this.eval = function(code, path, origCode) {
......................

问题似乎出现在分配rawEval的行。评论它导致错误转移到其他地方。有没有人遇到过这个问题?

帮助?

感谢。

1 个答案:

答案 0 :(得分:0)

如果有人(包括我)再次遇到此问题,这是供将来参考。

Safari在我的案例中抛出的错误是虚假的,或者至少是非常模糊的。

我在我的一个库中定义了一个类。而且我不想存储该类对象的句柄/引用。所以,我做了类似的事情:

function reply(...) {
    new ClassName(.....).onHide = bind(...);
    ..........
}

当我将其更改为以下内容时,Safari停止抱怨。

function reply(...) {
    var dg = new ClassName(......);
    dg.onHide = bind(...);
    ..............
}

声明一个新对象并定义其成员属性(或函数)之一可能是个问题。