原文地址:github.com/Monine/stud…git
按照頁面加載、切換、關閉三個動做講解頁面狀態改變會觸發的一些事件github
文檔解析完成觸發 readystatechange
事件,document.readyState === 'interactive'
,接着當即觸發 DOMContentLoaded
事件。瀏覽器
以上兩個事件是相同的,表示同一個意思,文檔已經完成加載,文檔已被解析,可是諸如圖像,樣式表和框架之類的子資源仍在加載。惟一的不一樣點在於全部瀏覽器都支持 readystatechange
事件,IE8 及如下不支持 DOMContentLoaded
事件。框架
全部依賴資源加載完畢觸發 readystatechange
事件,document.readyState === 'complete'
,接着當即觸發 load
事件。ide
以上兩個事件也是相同的,表示同一個意思,文檔和全部依賴資源都已加載完成。函數
觸發 pageshow
事件code
此事件除了在 load
事件觸發後初始化頁面時觸發以外,當一條會話歷史記錄被執行的時候也將會觸此事件(包括 後退 / 前進 按鈕操做)。視頻
當用戶最小化網頁或者瀏覽到其餘標籤的網頁時,API 將發送一個關於當前頁面的可見信息的事件 visibilitychange
,對應的狀態標識是 document.visibilityState
。對象
常見使用場景如視頻或音樂播放頁面,當用戶改變當前頁面可見狀態時,自動開啓或暫停播放。事件
詳細參考:Page Visibility API
頁面關閉以前觸發 beforeunload
事件
當瀏覽器窗口關閉或者刷新時,會觸發 beforeunload
事件。當前頁面不會直接關閉,能夠點擊肯定按鈕關閉或刷新,也能夠取消關閉或刷新(取消默認行爲)。
若是處理函數的 event
對象的 returnValue
屬性賦值非空字符串,瀏覽器會彈出一個對話框,來詢問用戶是否肯定要離開當前頁面。有些瀏覽器會將返回的字符串展現在彈框裏,但有些其餘瀏覽器只展現它們自定義的信息。沒有賦值時,該事件不作任何響應。
須要注意的是,爲了不沒必要要的彈窗,若是頁面並無發生交互瀏覽器可能不會展現在 beforeunload
事件中引起的彈框,甚至可能即便發生交互了也直接不顯示。
觸發 pagehide
事件
與 pageshow
事件大同小異,在 beforeunload
事件以後 unload
事件以前觸發,一樣在會話歷史記錄被執行的時候也將會觸此事件(包括 後退 / 前進 按鈕操做)。
頁面被卸載時觸發 unload
事件
當文檔或一個子資源(iframe)正在被卸載時,觸發 unload事件,父 iframe 會在子 iframe 卸載以前卸載。
詳細參考:unload
還有更多其它事件嗎?