“window”的“readystatechange”事件是什么意思?

6 javascript window readystate onreadystatechange microsoft-edge

尝试处理window.onreadystatechange,我注意到此事件在页面加载期间触发了两次。但我无法弄清楚每次事件后究竟发生了什么变化。如果不是 for window,而是 for document,那么就有document.readyState包含当前状态的属性。但在 的情况下window,没有任何“window.readyState”或类似的属性。那么触发readystatechange事件的真正含义是window什么,第一次和第二次触发之间的区别是什么?

这是我的代码,它提供了两个看似相同的控制台输出:

'use strict';

window.addEventListener('readystatechange', function(e) {
  console.log(window, e);
});
Run Code Online (Sandbox Code Playgroud)

nic*_*ank 7

windowreadystatechange在 IE 和 Edge 中触发事件(在 IE 11 中测试)。它不会在 Firefox 或 Chrome 中触发。

它实际上是由文档触发的,当它readyState更改为"interactive""complete"(冒泡)时。

因此,在 IE 中:

window.onreadystatechange == document.onreadystatechange
Run Code Online (Sandbox Code Playgroud)

不过我不建议使用它,因为在其他浏览器中不会触发此事件。