【问题标题】:console.dir(window) in Firefox?Firefox 中的 console.dir(window)?
【发布时间】:2011-07-21 16:41:45
【问题描述】:

console.dir(window) 在 Chrome 中:

http://ecmazing.com/unsorted/console-dir-window-in-chrome.png

console.dir(window) 在 Firebug 中(在 Firefox 7 中):

http://ecmazing.com/unsorted/console-dir-window-in-firebug.png

为什么 Firebug 只列出 window 对象的几个属性?如何在 Firefox 中列出所有全局属性?

另外,__proto__ 属性在哪里,以便我可以遵循原型链?

【问题讨论】:

  • 我将转向 Chrome 作为我的主要 JS 开发和调试工具。因为我没有找到答案。

标签: javascript firefox google-chrome browser firebug


【解决方案1】:

Firebug 似乎正在过滤掉不满足hasOwnProperty 的属性。例如,当使用 Firefox 4/Firebug 1.7 投资 DOM 时,navigatoraddHandler 会出现,但 confirm 不会出现。观察:

>>> window.hasOwnProperty('confirm')
false
>>> window.hasOwnProperty('addHandler')
true
>>> window.hasOwnProperty('navigator')
true

但是,Date 没有出现,并且:

>>> window.hasOwnProperty('Date')
true

所以它似乎也在过滤掉全局构造函数,这似乎得到了comment 9this bug 上的确认。我不知道使用什么函数来过滤这些构造函数。

无论哪种方式,我都没有找到解决此问题的方法。如果我这样做了,我会告诉你,但我认为在撰写本文时没有办法做你想做的事。

【讨论】:

  • 所以基本上,它很烂。 Chrome 的 console.dir(window) 是真正的交易 - 它列出了所有内容(数百个属性),并让您可以跟踪原型链直到 Object.prototype
  • 什么是addHandler?这不是一个全局属性 afaik。
  • @Šime 是的,不幸的是,这似乎是一个恰当的结论。奇怪的是,我在addHandler 上找不到任何信息,甚至在Mozilla 出色的Javascript 文档中也找不到。看起来它可能是特定于该页面的内容 - 当我通过控制台手动添加 window.addHandler 时,它会显示在 DOM 选项卡中。这一切似乎很矛盾,也许您应该考虑向 Firebug 提交错误报告,我相信他们可以更详细地回答。
  • 在我的 Firebug 中,window.hasOwnProperty('addHandler') 的计算结果为 false。您运行控制台的页面可能只是用addHandler 函数(可能作为addEventListener 的快捷方式)扩充了window(全局)对象。网页通常会引入全局属性(尽管应该避免)——这就是我在没有 JavaScript 代码的测试页面上运行控制台的原因(请参阅我的问题)。
【解决方案2】:

绝大多数选项似乎默认隐藏/禁用..

在 dom 选项卡上的字母 DOM 的右侧(当它被选中时) firebug 1.9.0b1(和 1.8 我确定..),有一个向下的箭头。

单击它并选择顶部的所有选项(即除了“仅显示自己的属性”和“仅显示可枚举的属性”之外的所有选项)允许我们看到一些原本隐藏的属性。

我确定过去的默认行为是显示所有属性,我不确定他们何时更改它,但在我们找到这些选项之前非常令人沮丧。

希望这可以帮助其他人在谷歌上搜索我刚刚所做的事情,试图弄清楚为什么你完全无法从 firebug 的 DOM 面板中获得任何有用的信息。

【讨论】:

    【解决方案3】:

    在 FireFox 中,您可以使用 console.log(window); 获取完整的窗口属性集,但这实际上会将您指向该对象的 DOM 选项卡,它会显示该对象的当前属性。

    使用console.dir(window); 可以在您请求的特定运行时为您提供对象属性的快照。如果您查看,您可以单击 FireFox console.dir(window); 结果中的最后一个“窗口”实例,以查看函数调用时与窗口对象相关联的属性。

    【讨论】:

    • 这将链接到 Firebug 的 DOM 选项卡。但这仍然只列出了 40-50 个属性。剩下的在哪里?缺少 ECMAScript 全局属性。此外,所有方法都丢失了。
    • 嗯,是的,你是对的,我试图在 FireFox 对象中找到“window.Date”打印出来,但不能......虽然你可以在 Chrome 中清楚地看到它打印出来。
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2016-11-27
    相关资源
    最近更新 更多