当我访问某个页面时,就像SPA一样,我知道某些对象会被其代码添加到window
。
有没有办法知道什么是本机浏览器对象/方法,哪些是由应用程序添加的?
答案 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
])