摘要:在這個(gè)事件發(fā)生期間,調(diào)用可阻止?jié)L動(dòng)當(dāng)手指從屏幕上移開時(shí)觸發(fā)。關(guān)于此事件的確切觸發(fā)事件,文檔中沒有明確說明。特定于事件目標(biāo)的對(duì)象的數(shù)組。
JS事件模型
事件模型以及周邊
事件捕獲
事件冒泡
事件觸發(fā)
移動(dòng)端事件模擬
事件委托
事件流 事件捕獲(event capturing)&事件冒泡(event bubbling)W3C模型給inner,out均綁定點(diǎn)擊事件.點(diǎn)擊inner,如果out先執(zhí)行,inner后執(zhí)行.則是事件捕獲.若inner先執(zhí)行.out后執(zhí)行則是事件冒泡.(這兩種模型來自于早期瀏覽器之爭)
示例演示先事件捕獲,到達(dá)目標(biāo)后再進(jìn)行冒泡
out.addEventListener("click", (e) => { console.log("out clicked! ") }, true) inner.addEventListener("click", (e) => { console.log("inner clicked! ") }, false) document.addEventListener("click", (e) => { console.log("document clicked! ") }, true)
out.addEventListener("click", (e) => { console.log("out clicked! ") }, true) inner.addEventListener("click", (e) => { console.log("inner clicked! ") }, false) document.addEventListener("click", (e) => { console.log("document clicked! ") }, false)
ele.onclick = function (){ // }事件解除綁定
ele.onclick = null;2.DOM2級(jí)事件(默認(rèn)發(fā)生在冒泡階段,由第三個(gè)參數(shù)決定,可綁定多個(gè)事件) 事件綁定
ele.addEventListener(eventType, handler, useCapture)//eventType不帶on,如click //IE下用attachEvent ele.attachEvent(eventType, handler);事件解除綁定
ele.removeEventListener(eventType, handler, useCapture) //IE下使用detachEvent ele.detachEvent(eventType, handler);事件對(duì)象 DOM事件模型中的事件對(duì)象常用屬性:
type用于獲取事件類型
target獲取事件目標(biāo)
stopPropagation()阻止事件冒泡
preventDefault()阻止事件默認(rèn)行為
IE事件模型中的事件對(duì)象常用屬性:srcElement獲取事件目標(biāo)
cancelBubble阻止事件冒泡
returnValue阻止事件默認(rèn)行為
兼容處理var eventUtil = { addEvent: function(ele, event, func, bool) { bool = bool || false; if (ele.addEventListener) { ele.addEventListener(event, func, bool) } else { ele.attachEvent("on" + event, func, bool); } }, removeEvent: function(ele, event, func, bool) { bool = bool || false; if (ele.removeEventListener) { ele.removeEventListener(event, func, bool); } else { ele.detachEvent("on" + event, func, bool); } }, getEvent: function(event) { return event || window.event; }, getTarget: function(event) { return event.target || event.srcElement; }, preventDefault:function (event) { if (event.preventDefault) { event.preventDefault(); }else { event.returnValue = false;//IE } }, stopPropagation:function (event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true;//IE } } };移動(dòng)端事件 Touch事件
touchstart:當(dāng)手指觸摸屏幕時(shí)觸發(fā);即使已經(jīng)有一個(gè)手指放在了屏幕上也會(huì)觸發(fā)。
touchmove:當(dāng)手指在屏幕上滑動(dòng)時(shí)連續(xù)的觸發(fā)。在這個(gè)事件發(fā)生期間,調(diào)用preventDefault()可阻止?jié)L動(dòng)
touchend:當(dāng)手指從屏幕上移開時(shí)觸發(fā)。
touchcancel:當(dāng)系統(tǒng)停止跟蹤觸摸時(shí)觸發(fā)。關(guān)于此事件的確切觸發(fā)事件,文檔中沒有明確說明。
以上事件的event對(duì)象上面都存在如下屬性:
touches:表示當(dāng)前跟蹤的觸摸操作的Touch對(duì)象的數(shù)組。
targetTouches:特定于事件目標(biāo)的Touch對(duì)象的數(shù)組。
changeTouches:表示自上次觸摸以來發(fā)生了什么改變的Touch對(duì)象的數(shù)組。
每個(gè)Touch對(duì)象包含下列屬性:
identifier:表示觸摸的唯一ID。
clientX:觸摸目標(biāo)在視口中的X坐標(biāo)。
clientY:觸摸目標(biāo)在視口中的Y坐標(biāo)。
pageX:觸摸目標(biāo)在頁面中的x坐標(biāo)。
pageY:觸摸目標(biāo)在頁面中的y坐標(biāo)。
screenX:觸摸目標(biāo)在屏幕中的x坐標(biāo)。
screenY:觸摸目標(biāo)在屏幕中的y坐標(biāo)。
target:觸摸的DOM節(jié)點(diǎn)坐標(biāo)
touchstart =>touchmove =>touchend =>click(延遲300~200ms)
Tap事件封裝原理:利用touchstart =>touchmove =>touchen模擬click
HTMLElement.prototype.tap = function (handler,interval) { that = this this.isMove = false, this.startTime = 0, this.addEventListener("touchstart",function(e){ startTime = Date.now(); }), this.addEventListener("touchmove",function(e){ isMove = true; }), this.addEventListener("touchend",function(e){ if(!this.isMove && (Date.now()-startTime) < interval){ handler(); } this.isMove = false; this.startTime = 0; }) };事件委托
把本應(yīng)綁定在自身的事件綁定到其他元素上來觸發(fā)即事件委托
//HTML
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82112.html
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:全部代碼是一個(gè)先執(zhí)行一個(gè)執(zhí)行過程中遇到等異步操作則創(chuàng)建一個(gè)遇到等創(chuàng)建一個(gè)這兩個(gè)分別被掛起執(zhí)行棧為空時(shí)開始處理完成后處理直到該全部執(zhí)行完然后繼續(xù)主線程調(diào)用棧注每一次事件循環(huán),只處理一個(gè)。 JS異步原理(事件,隊(duì)列) 調(diào)用棧 JS執(zhí)行時(shí)會(huì)形成調(diào)用棧,調(diào)用一個(gè)函數(shù)時(shí),返回地址、參數(shù)、本地變量都會(huì)被推入棧中,如果當(dāng)前正在運(yùn)行的函數(shù)中調(diào)用另外一個(gè)函數(shù),則該函數(shù)相關(guān)內(nèi)容也會(huì)被推入棧頂.該函數(shù)執(zhí)...
閱讀 1401·2023-04-25 18:34
閱讀 3463·2021-11-19 09:40
閱讀 2840·2021-11-17 09:33
閱讀 2960·2021-11-12 10:36
閱讀 2843·2021-09-26 09:55
閱讀 2666·2021-08-05 10:03
閱讀 2530·2019-08-30 15:54
閱讀 2876·2019-08-30 15:54