JavaScript事件類型中UI事件詳解
“DOM3級(jí)事件”規(guī)定了一下幾類事件
UI事件,當(dāng)用戶與頁面上的元素交互時(shí)除法;
焦點(diǎn)事件,元素獲得或失去焦點(diǎn);
鼠標(biāo)事件,通過鼠標(biāo)在頁面上執(zhí)行操作;
滾輪事件,使用鼠標(biāo)滾輪或類似設(shè)備;
文本事件,當(dāng)用戶在文檔中輸入文本;
鍵盤事件,通過鍵盤在頁面上執(zhí)行操作;
合成事件,當(dāng)為IME(Input Method Editor,輸入法編輯器)輸入字符時(shí)除法;
變動(dòng)事件(mutation),底層DOM結(jié)構(gòu)發(fā)生變化;
變動(dòng)名稱事件,當(dāng)元素或?qū)傩悦儎?dòng)時(shí),此類事件已被廢棄。
下文著重說明UI事件的內(nèi)容
UI事件指的是那些不一定與用戶操作有關(guān)的事件。
DOMActivate,元素已經(jīng)被用戶操作(鼠標(biāo)或鍵盤)激活。已經(jīng)被廢棄。 load,頁面完全加載完后在window上觸發(fā),所有框架加載完畢后在框架集上觸發(fā),圖像加載完畢在img元素上觸發(fā),當(dāng)嵌入內(nèi)容加載完畢在object元素上觸發(fā)。 unload,頁面完全卸載(window),所有框架都卸載后(框架集),嵌入內(nèi)容卸載完畢后(object)。 abort,當(dāng)用戶停止下載過程,如果嵌入內(nèi)容沒有加載完,則在object元素上除法。 error,當(dāng)js錯(cuò)誤時(shí)(window),當(dāng)無法加載圖像時(shí)(img),當(dāng)無法加載嵌入內(nèi)容時(shí)(object),當(dāng)一或多個(gè)框架無法加載(框架集)。 select,當(dāng)用戶選擇文本框(texterea或input)中的一個(gè)或多個(gè)字符時(shí)觸發(fā)。 resize:當(dāng)窗口或框架的大小變化時(shí)(window或框架) scroll:當(dāng)用戶滾動(dòng)帶滾動(dòng)條的元素中的內(nèi)容時(shí)(在該元素上觸發(fā))
load事件
js中最常用的一個(gè)事件就是load,當(dāng)頁面完全加載完畢后(所有圖像、js文件、css文件等),就會(huì)觸發(fā)window上面的load事件。如:
window.onload = function () { console.log('loaded'); }
一般來說,在window上面發(fā)生的任何事件都可以在body元素中通過相應(yīng)的特征來指定,因?yàn)樵贖TML中無法訪問window元素。這只是為了保證向后兼容的一種權(quán)宜之計(jì)。如:
document.body.onload = function () { console.log('loaded'); }
同樣也可以在圖像元素上使用:
var img = document.getElementById("img"); img.onload = function () { console.log(event.target.src); }
又如下面代碼,在window加載完畢后,想body追加一個(gè)img元素,在img元素加載完畢后再提示圖像的src以及一個(gè)提示信息:
window.onload = function () { var image = document.createElement("img"); document.body.appendChild(image); image.src = "scr.png" image.onload = function () { console.log(event.target.src); console.log('img is loaded'); }; }
另外,script元素也以非標(biāo)準(zhǔn)的方式支持load事件。
部分瀏覽器還支持link元素上的load事件,以便開發(fā)人員確定樣式表是否加載完畢。
unload事件
這個(gè)事件在文檔被完全卸載后觸發(fā)。只要用戶從一個(gè)頁面切換到另一個(gè)頁面,就會(huì)發(fā)生unload事件。
window.onunload = function () { alert("8888"); }
應(yīng)該小心編寫onunload事件處理程序中的代碼,因?yàn)轫撁婕虞d后存在的那些對(duì)象,此時(shí)就不一定存在了。
resize事件
當(dāng)瀏覽器窗口被調(diào)整到一個(gè)新的高度或?qū)挾?,就?huì)觸發(fā)該事件。
window.onresize = function () { console.log(document.body.clientWidth); }
因?yàn)椴糠譃g覽器在窗口變化了1像素就觸發(fā)該事件,并隨著變化不斷觸發(fā);也有瀏覽器則只會(huì)在用戶停止調(diào)整窗口大小時(shí)才會(huì)觸發(fā)。所以應(yīng)該避免在這個(gè)事件的處理程序中加入大量的計(jì)算代碼,避免瀏覽器反應(yīng)變慢。
scroll事件
該事件雖然在window對(duì)象上發(fā)生的,但實(shí)際表示的是頁面中響應(yīng)元素的變化?;祀s模式下,通過body元素的scrollLeft和scrollTop來監(jiān)控變化;而在非標(biāo)準(zhǔn)模式下,除Safari之外的所有瀏覽器都會(huì)通過html元素(documentElement)來反映這個(gè)變化:
window.onscroll = function () { console.log(document.documentElement.scrollTop || document.body.scrollTop); }
因?yàn)闉g覽器隨著變化不斷觸發(fā),所以應(yīng)該避免在這個(gè)事件的處理程序中加入大量的計(jì)算代碼,避免瀏覽器反應(yīng)變慢。
abort事件
關(guān)于abort、error、select等事件請(qǐng)關(guān)注后續(xù)update
error事件
關(guān)于abort、error、select等事件請(qǐng)關(guān)注后續(xù)update
select事件
關(guān)于abort、error、select等事件請(qǐng)關(guān)注后續(xù)update
- JavaScript事件類型中焦點(diǎn)、鼠標(biāo)和滾輪事件詳解
- js控制鼠標(biāo)事件移動(dòng)及移出效果顯示
- javascript簡單拖拽實(shí)現(xiàn)代碼(鼠標(biāo)事件 mousedown mousemove mouseup)
- JS鼠標(biāo)事件大全 推薦收藏
- JavaScript Event學(xué)習(xí)第九章 鼠標(biāo)事件
- javascript 鼠標(biāo)事件總結(jié)
- javascript之卸載鼠標(biāo)事件的代碼
- JavaScript事件學(xué)習(xí)小結(jié)(五)js中事件類型之鼠標(biāo)事件
相關(guān)文章
JS時(shí)間控制實(shí)現(xiàn)動(dòng)態(tài)效果的實(shí)例講解
下面小編就為大家?guī)硪黄狫S時(shí)間控制實(shí)現(xiàn)動(dòng)態(tài)效果的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07cookie在javascript中的使用技巧以及隱私在服務(wù)器端的設(shè)置
cookie在javascript中的使用技巧,需要的朋友可以參考下2012-12-12原生javascript實(shí)現(xiàn)類似vue的數(shù)據(jù)綁定功能示例【觀察者模式】
這篇文章主要介紹了原生javascript實(shí)現(xiàn)類似vue的數(shù)據(jù)綁定功能,結(jié)合實(shí)例形式分析了JavaScript基于觀察者模式實(shí)現(xiàn)類似vue的數(shù)據(jù)綁定相關(guān)操作技巧,需要的朋友可以參考下2020-02-02基于JS如何實(shí)現(xiàn)給字符加千分符(65,541,694,158)
JS如何實(shí)現(xiàn)給字符加千分符,本文給大家?guī)砹嘶趈s實(shí)現(xiàn)的代碼,代碼簡單易懂,感興趣的朋友一起學(xué)習(xí)吧2016-08-08js, jQuery實(shí)現(xiàn)全選、反選功能
本文主要介紹了js, jQuery實(shí)現(xiàn)全選、反選功能的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03