window.onchange - 是什么触发了它,移除它是否安全?

window.onchange - What triggers it, and is it safe to remove?

我继承了以下代码:

// if parent window is closed or changed, close popups
window.onbeforeunload = function () { /* some cleanup stuff */ };
window.onchange = function () { /* same exact cleanup stuff */ };

window.onchange 行导致问题;
在 Chrome,它会无缘无故地触发(清理结果不理想)。它不会在 IE11 中触发。

我可以安全地摆脱这条线吗?

Mozilla guys不要给太多信息:

An event handler for change events sent to the window.

...一般来说,互联网似乎也没有太多可说的。

那么究竟是什么触发了 windows.onchange?它适用于所有主要浏览器吗? (如果没有,那么这对我来说是一个足够好的保证,我可以删除它。)

更改表单控件时会触发更改事件。在下面的演示中,键入一些内容,然后点击 Tab 模糊控件并触发更改事件。

onchange = function (e) { console.log(e.target); }
<input>

事件冒泡,因此监听器不需要直接附加到输入。


在你的例子中不可能说它是否是 "safe to remove",因为没有提供关于正在清理的内容的上下文,所以我们无法判断是否有必要/有用/有害地执行每次更改事件后清理。