如何知道当前页面代码添加到窗口的对象?

时间:2017-12-27 14:59:28

标签: javascript browser single-page-application

当我访问某个页面时,就像SPA一样,我知道某些对象会被其代码添加到window

有没有办法知道什么是本机浏览器对象/方法,哪些是由应用程序添加的?

3 个答案:

答案 0 :(得分:0)

基本调用窗口变量可以从内部的所有内容中概述。我想如果你想知道它目前包含多少功能,你可以做类似的事情:

Object.keys(window).length; //or just Object.keys for the names

要知道是否已将新功能添加到窗口对象中,需要知道其所在位置之前的键数或仅知道静态数。举几个例子。在stackoverflow上,window对象只包含246个键。然而,在像谷歌这样的东西我计算了1597键。所以它真的取决于你正在使用的应用程序。

所以你能做的就是编写一个函数来检查密钥的数量是否已经增加,以及何时发生这种情况,取出密钥并将其移动到函数内部的数组中。

这正是我从你的问题中得到的。

答案 1 :(得分:0)

我认为你正在寻找突变观察者。使用它们,您可以侦听新添加或删除的DOM元素。我相信您也会收到有关属性和文本更改的通知。

这是一篇关于它们的简短文章的链接。 Mutation Observers

希望这有帮助!

答案 2 :(得分:0)

假设您有两个单独的标签。一个没有向窗口添加任何东西的东西(很难找到),一个添加了一些属性的东西。

都打开了。

在干净的人做: a = Object.keys(window); JSON.stringify(a);

复制结果并将其移动到已向窗口添加一些属性的选项卡。然后做a = JSON.parse(<Ctrl + v>)b = Object.keys(window)

最后: c = b.filter(p=>a.indexOf(p)=== -1)

now c包含已由该选项卡添加到窗口对象的所有属性的名称;

热门提示: Firefox Developer Edition默认执行此操作: localeData() 请注意,window的默认属性在不同的属性中分隔(称为[default properties])