瀏覽器監(jiān)聽(tīng)事件

一.瀏覽器監(jiān)聽(tīng)事件有哪些

瀏覽器監(jiān)聽(tīng)事件涵蓋了用戶交互、頁(yè)面加載、資源加載、DOM變化等多個(gè)方面,以下是一份較為詳細(xì)的瀏覽器事件大全:

頁(yè)面加載和生命周期事件

`DOMContentLoaded`:當(dāng)初始HTML文檔被加載并解析完畢時(shí)觸發(fā),但不包括樣式表、圖像等外部資源。

`load`:當(dāng)整個(gè)頁(yè)面包括所有外部資源如圖片、樣式表等都已完成加載時(shí)觸發(fā)。

`beforeunload`:頁(yè)面即將卸載時(shí)觸發(fā),通常用于阻止用戶離開(kāi)頁(yè)面或詢問(wèn)是否保存未提交的數(shù)據(jù)。

`unload`:頁(yè)面正在卸載時(shí)觸發(fā),但此事件在某些現(xiàn)代瀏覽器中可能不可靠。

`pageshow` / `pagehide`:頁(yè)面顯示或隱藏時(shí)觸發(fā),與瀏覽器的歷史記錄有關(guān)。

用戶交互事件

`click`、`dblclick`:鼠標(biāo)單擊、雙擊事件。

`mousedown`、`mouseup`、`mousemove`、`mouseover`、`mouseout`、`mouseenter`、`mouseleave`、`contextmenu`:鼠標(biāo)相關(guān)事件。

`touchstart`、`touchmove`、`touchend`、`touchcancel`:觸摸設(shè)備上的觸摸事件。

`keydown`、`keyup`、`keypress`:鍵盤按鍵事件。

`scroll`:滾動(dòng)事件。

`focus`、`blur`:元素獲取或失去焦點(diǎn)事件。

`input`、`change`:表單元素內(nèi)容改變事件。

`formchange`、`forminput`(部分瀏覽器支持):表單數(shù)據(jù)變化事件。

`submit`:表單提交事件。

窗口和視口事件

`resize`:窗口或視口大小變化時(shí)觸發(fā)。

`orientationchange`:設(shè)備方向發(fā)生變化時(shí)觸發(fā)(移動(dòng)端)。

`fullscreenchange`:全屏模式切換時(shí)觸發(fā)。

加載和網(wǎng)絡(luò)狀態(tài)事件

- `online`、`offline`:網(wǎng)絡(luò)在線/離線狀態(tài)變化時(shí)觸發(fā)。

- `progress`(xhr, fetch等):文件上傳下載進(jìn)度事件。

- `error`:資源加載錯(cuò)誤時(shí)觸發(fā)。

- `abort`:請(qǐng)求被中斷時(shí)觸發(fā)。

自定義事件

- `CustomEvent`:開(kāi)發(fā)者可以創(chuàng)建和觸發(fā)自定義事件。

DOM變化事件

- `MutationObserver`:用于監(jiān)聽(tīng)DOM樹(shù)結(jié)構(gòu)變化。

- `IntersectionObserver`:監(jiān)聽(tīng)DOM元素是否可見(jiàn)(與視口的交集變化)。

- `ResizeObserver`:監(jiān)聽(tīng)DOM元素尺寸變化。

- `PerformanceObserver`:監(jiān)聽(tīng)網(wǎng)頁(yè)性能指標(biāo)變化。

直接往 PerformanceObserver() 入?yún)⒛涿卣{(diào)函數(shù),成功 new 了一個(gè) PerformanceObserver 類的,名為 observer 的對(duì)象

var observer = new PerformanceObserver(function (list, obj) {

? var entries = list.getEntries();

? for (var i = 0; i < entries.length; i++) {

? ? //處理“navigation”和“resource”事件

? }

});

//調(diào)用 observer 對(duì)象的 observe() 方法

observer.observe({ entryTypes: ["navigation", "resource"] });

移動(dòng)端特有事件

- `deviceorientation` / `deviceorientationabsolute`:設(shè)備方向事件(陀螺儀數(shù)據(jù))。

- `devicemotion`:設(shè)備運(yùn)動(dòng)事件(加速度計(jì)數(shù)據(jù))。

- `touchcancel`:觸摸操作因系統(tǒng)原因被取消時(shí)觸發(fā)。

#### 更多高級(jí)事件

- `popstate`:瀏覽器歷史記錄變化(如前進(jìn)、后退)時(shí)觸發(fā)。

- `hashchange`:URL哈希值改變時(shí)觸發(fā)。

- `message`:跨窗口通信時(shí)觸發(fā)。

- `storage`:localStorage或sessionStorage發(fā)生變化時(shí)觸發(fā)。

每個(gè)事件都可以通過(guò) `addEventListener` 方法綁定監(jiān)聽(tīng)器到相應(yīng)的元素或全局對(duì)象(如 `window`)。例如:

javascript

window.addEventListener('load', function() {

? console.log('頁(yè)面已完全加載');

});

document.getElementById('myButton').addEventListener('click', function() {

? console.log('按鈕被點(diǎn)擊');

});

window.addEventListener('resize', function() {

? console.log('窗口大小已改變');

});

document.fonts.onloadingdone? 監(jiān)聽(tīng)頁(yè)面字體文件加載完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容