如何查找网页中的哪个脚本实际覆盖了 window.open() 到 window.open = true



我有一个javascript函数,它实际上使用window.open((方法在Iframe中加载页面。但我确信通过另一个脚本,window.open 被覆盖了。这就是为什么我收到一个错误

Uncaught TypeError: window.open is not a function

有没有办法找出哪个脚本实际执行此操作,而无需在所有脚本中找到。因为页面有很多脚本。

您可以通过执行以下命令将window.open设置为不可配置和不可写

Object.defineProperty( window, "open",
{  writable: false,
configurable: false
}
);

在加载或执行其他脚本之前。

然后,Chrome 会报告有人试图将window.open设置为true

Uncaught TypeError: Cannot assign to read only property 'open' of object '#<Window>'

以及尝试地点的详细信息。Firefox 的行为类似,但错误消息为

TypeError: "open" is read-only


请注意,MDN 在 2018 年 6 月 1 日对修改现有属性的描述指出,尝试写入不可写属性"也不会引发错误"。这似乎不正确,并且与代码示例注释不匹配。

相关内容

  • 没有找到相关文章

最新更新