2

試圖處理window.onreadystatechange,我注意到這個事件在頁面加載期間觸發兩次。但我無法弄清楚每次事件後究竟發生了什麼變化。如果不是window,而是document,那麼已經有document.readyState屬性包含當前狀態。但在window的情況下,沒有任何「window.readyState」或類似的財產。那麼當window發生readystatechange事件時,它的真正含義是什麼,以及第一次和第二次發射之間的區別是什麼?'window'的'readystatechange'事件是什麼意思?

這是我的代碼,讓兩個看似相同控制檯輸出:

'use strict'; 
 

 
window.addEventListener('readystatechange', function(e) { 
 
    console.log(window, e); 
 
});

+1

「readyState」確實是文檔對象的屬性:https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState –

+1

我沒有收到任何事件。你使用的是什麼瀏覽器?該頁面上加載了哪些其他腳本? – Bergi

+0

@JeffMcCloud,我對'document'的'readyState'屬性和'readystatechange'事件瞭解很多,但是我的問題是關於'window'而不是'document'處理這個事件。 –

回答

3

window僅將觸發事件readystatechange在IE和邊緣(在IE 11測試)。 它不會在Firefox或Chrome中觸發。

它實際上是由文檔觸發的,其readyState更改爲"interactive""complete"(冒泡)。

因此,在IE:

window.onreadystatechange == document.onreadystatechange 

我不會推薦,雖然使用它,因爲這事件不會在其他瀏覽器發射。