递归搜索javascript全局执行上下文

Posted

技术标签:

【中文标题】递归搜索javascript全局执行上下文【英文标题】:Recursively search javascript Global Execution Context 【发布时间】:2018-04-18 05:14:29 【问题描述】:

我想在 Chrome 开发人员工具中执行此操作,但此时我会采取任何措施。

问题

如果我知道我正在寻找一个特定的对象,我如何搜索整个 JS 层次结构来找到它?

情况

从我在 irc://irc.freenode.net/bash 上的时间得知,当人们将问题简化为他们认为应该做的事情时,他们会浪费很多时间。

我使用 Confluence Cloud,他们的 WYSIWYG 非常糟糕。因为它是 TinyMCE,所以我可以通过在 Chrome 开发者工具中编辑 DOM 来完成很多。我应该能够破解 JS 对象并获得更多通过。但是,第一步是找到 TinyMCE.settings 对象。

【问题讨论】:

试试How to search the browser window object looking which object or variable has the searched-for value? 谢谢,这是一个很好的线索。我真正需要的是基于对象名称而不是值进行搜索。我会尝试将其转换过来,但我会一直保持打开状态,直到我这样做为止。 【参考方案1】:

如果您有对对象构造函数的引用,queryObjects() API 可能能够帮助您定位对象。您可能需要设置断点并在您知道该对象仍存在于堆中的位置暂停代码。

通过chrome://version 查看您使用的 Chrome 版本。 queryObjects() 是在 Chrome 62 中引入的,现在应该可以使用 Stable,但您可能还没有。

【讨论】:

以上是关于递归搜索javascript全局执行上下文的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript进阶之执行上下文和执行栈

深入理解javascript原型和闭包(11)——执行上下文栈

javascript作用域链理解

js执行上下文

JavaScript高级部分概念用法

深入浅出 JavaScript 中的 this