间歇性JavaScript问题

时间:2010-09-23 17:09:53

标签: javascript firebug firefox3.6

我正在通过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没有这个问题。

1 个答案:

答案 0 :(得分:2)

错误在于:

console.log(result);

删除该行,一切都应该没问题。

console对象是Firebug的东西(指的是Firebug控制台)。 Safari / Chrome恰好也实现了console对象(指的是Webkit js控制台)。 Firefox,确实其他浏览器没有控制台对象。所以它会引发错误。

BTW:像往常一样,逃避是完全没必要的。这完全等同于代码:

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;
}

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