我正在通过eval运行一些JavaScript(我知道,射击我),它基本上枚举了文档对象上的所有属性。我的问题是,虽然它在firebug中工作,但是当从脚本运行时,它会在Firefox中抛出一个未实现的异常。
Link to JavaScript script, the exception thrown, and the firebug command working.
有关这里发生了什么的任何建议吗?
为了记录,这是在64位的Ubuntu 10.04上的Firefox 3.6.10上完成的,并且chrome没有这个问题。
答案 0 :(得分: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;
}
虽然我不会那样做(有时这是必要的,但很少见)。