我正在通过 eval 运行一些 JavaScript(我知道,射击我),它基本上枚举了文档对象上的所有属性。我的问题是,虽然它在 firebug 中工作,但在从脚本运行时,它会在 Firefox 中引发未实现的异常。
链接到 JavaScript 脚本、引发的异常和 firebug 命令正常工作。
关于这里发生了什么的任何建议?
作为记录,这是在 Ubuntu 10.04 64 位的 Firefox 3.6.10 上完成的,而 chrome 没有这个问题。
我正在通过 eval 运行一些 JavaScript(我知道,射击我),它基本上枚举了文档对象上的所有属性。我的问题是,虽然它在 firebug 中工作,但在从脚本运行时,它会在 Firefox 中引发未实现的异常。
链接到 JavaScript 脚本、引发的异常和 firebug 命令正常工作。
关于这里发生了什么的任何建议?
作为记录,这是在 Ubuntu 10.04 64 位的 Firefox 3.6.10 上完成的,而 chrome 没有这个问题。
错误在这里:
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;
}
虽然我什至不会这样做(有时是必要的,但很少)。