【发布时间】:2012-09-08 10:11:40
【问题描述】:
有没有办法在当前活动的对象模型中搜索 JavaScript 属性(例如命名函数)(Firebug 在“DOM”选项卡上显示的内容,我在 Chrome 开发人员工具中找不到直接等效项)当前加载的页面,使用主要浏览器的通用开发工具?
例如,我搜索“beta”,开发人员工具显示类似window.alpha.beta 的内容,这意味着某个脚本文件在窗口对象上创建了一个名为“alpha”的对象,该对象具有属性 beta。
我明确不想在所有脚本文件中搜索字符串(例如,Chrome 开发者工具中的Ctrl-Shift-F)。
用例是我想从扩展/用户脚本调用页面的功能。我知道该函数存在,但它是使用复杂的框架创建的,我不知道它在页面的对象模型中的哪个位置结束。
PS:欢迎对问题进行与术语相关的编辑。
【问题讨论】:
-
如果没有人提供原生答案,请考虑以
window开头的递归for..in搜索(并跳过window.window/current === child)。 -
@MattWhipple 这正是我不感兴趣的相反情况。我确实在 Chrome 开发工具的“资源”选项卡上看到了函数定义。问题是我不知道代码执行后它在页面的对象模型上的位置。
-
如果您点击开发者工具中的元素选项卡,您可以点击任何元素,在右侧面板上,您可以点击属性,您可以打开第一个元素以查看与所选对象关联的所有对象/属性元素。为了探索 window 对象,您可以进入 Sources 选项卡并为“window”添加一个监视表达式,它也可以让您探索所有全局对象和函数。你检查过这个吗?
-
@AkashKava 是的,谢谢,这是正确的方向。不幸的是,有很多这样的功能(2 MiB 的缩小 JS)并且它们位于复杂的对象模型中,因此手动“浏览”树在最坏的情况下是没有希望的,在最好的情况下是时间密集的。这就是为什么我一直在寻找一种方法来搜索它(因为我确实知道属性的名称,只是不知道它在哪里)。
标签: javascript dom firebug google-chrome-devtools