0

我正在通过 eval 运行一些 JavaScript(我知道,射击我),它基本上枚举了文档对象上的所有属性。我的问题是,虽然它在 firebug 中工作,但在从脚本运行时,它会在 Firefox 中引发未实现的异常。

链接到 JavaScript 脚本、引发的异常和 firebug 命令正常工作。

关于这里发生了什么的任何建议?

作为记录,这是在 Ubuntu 10.04 64 位的 Firefox 3.6.10 上完成的,而 chrome 没有这个问题。

4

1 回答 1

2

错误在这里:

console.log(result);

删除那条线,一切都应该没问题。

console对象是一个 Firebug 事物(指 Firebug 控制台)。Safari/Chrome 恰好也实现了一个console对象(指的是 Webkit js 控制台)。Firefox,实际上其他浏览器没有控制台对象。所以它会抛出一个错误。

顺便说一句:像往常一样,评估是完全没有必要的。这是完全等效的代码:

for (key in document) {
    result[i] = typeof document[key];
    result[i+1]="document."+key;
    i+=2;
}

如果您坚持调用它,request则将其用作参考:

var request = window.document;
for (key in request) {
    result[i] = typeof request[key];
    result[i+1]=request+"."+key;
    i+=2;
}

如果您坚持通过字符串传递对象名称,那么为了理智起见,请以不那么令人困惑的方式使用 eval:

var string = "window.document";
eval("var request ="+string);
for (key in request) {
    result[i] = typeof request[key];
    result[i+1]=request+"."+key;
    i+=2;
}

虽然我什至不会这样做(有时是必要的,但很少)。

于 2010-09-23T17:17:17.170 回答