摘要:一般化的變動(dòng)事件。沒(méi)有對(duì)應(yīng)的級(jí)事件事件被分散到其他類別中。與事件關(guān)聯(lián)的視圖。布爾值表示按下的鍵的鍵碼。布爾值表示事件是否應(yīng)該冒泡。創(chuàng)建事件對(duì)象初始化事件對(duì)象觸發(fā)事件
模擬事件 DOM中的事件模擬
可以在 document 對(duì)象上使用 createEvent() 方法創(chuàng)建 event 對(duì)象。
UIEvents :一般化的 UI 事件。鼠標(biāo)事件和鍵盤(pán)事件都繼承自 UI 事件。DOM3 級(jí)中是 UIEvent 。
MouseEvents :一般化的鼠標(biāo)事件。DOM3 級(jí)中是 MouseEvent 。
MutationEvents :一般化的 DOM 變動(dòng)事件。DOM3 級(jí)中是 MutationEvent 。
HTMLEvents :一般化的 HTML 事件。沒(méi)有對(duì)應(yīng)的 DOM3 級(jí)事件(HTML 事件被分散到其他類 別中)。
在創(chuàng)建了 event 對(duì)象之后,還需要使用與事件有關(guān)的信息對(duì)其進(jìn)行初始化。每種類型的 event 對(duì)象都有一個(gè)特殊的方法,為它傳入適當(dāng)?shù)臄?shù)據(jù)就可以初始化該 event 對(duì)象。不同類型的這個(gè)方法的名字也不相同,具體要取決于 createEvent() 中使用的參數(shù)。模擬事件的最后一步就是觸發(fā)事件。這一步需要使用 dispatchEvent() 方法,所有支持事件的DOM 節(jié)點(diǎn)都支持這個(gè)方法。調(diào)用 dispatchEvent() 方法時(shí),需要傳入一個(gè)參數(shù),即表示要觸發(fā)事件的 event 對(duì)象。觸發(fā)事件之后,該事件就躋身“官方事件”之列了,因而能夠照樣冒泡并引發(fā)相應(yīng)事件處理程序的執(zhí)行。
模擬鼠標(biāo)事件
創(chuàng)建鼠標(biāo)事件對(duì)象的方法是為 createEvent() 傳入字符串 "MouseEvents" 。返回的對(duì)象有一個(gè)名為 initMouseEvent() 方法,用于指定與該鼠標(biāo)事件有關(guān)的信息。這些參數(shù)的含義如下。
type (字符串):表示要觸發(fā)的事件類型,例如 "click" 。
bubbles (布爾值):表示事件是否應(yīng)該冒泡。為精確地模擬鼠標(biāo)事件,應(yīng)該把這個(gè)參數(shù)設(shè)置為true 。
cancelable (布爾值):表示事件是否可以取消。為精確地模擬鼠標(biāo)事件,應(yīng)該把這個(gè)參數(shù)設(shè)置為 true 。
view (AbstractView):與事件關(guān)聯(lián)的視圖。這個(gè)參數(shù)幾乎總是要設(shè)置為 document.defaultView 。
detail (整數(shù)):與事件有關(guān)的詳細(xì)信息。這個(gè)值一般只有事件處理程序使用,但通常都設(shè)置為 0 。
screenX (整數(shù)):事件相對(duì)于屏幕的 X 坐標(biāo)。
screenY (整數(shù)):事件相對(duì)于屏幕的 Y 坐標(biāo)。
clientX (整數(shù)):事件相對(duì)于視口的 X 坐標(biāo)。
clientY (整數(shù)):事件想對(duì)于視口的 Y 坐標(biāo)。
ctrlKey (布爾值):表示是否按下了 Ctrl 鍵。默認(rèn)值為 false 。
altKey (布爾值):表示是否按下了 Alt 鍵。默認(rèn)值為 false 。
shiftKey (布爾值):表示是否按下了 Shift 鍵。默認(rèn)值為 false 。
metaKey (布爾值):表示是否按下了 Meta 鍵。默認(rèn)值為 false 。
button (整數(shù)):表示按下了哪一個(gè)鼠標(biāo)鍵。默認(rèn)值為 0 。
relatedTarget (對(duì)象):表示與事件相關(guān)的對(duì)象。這個(gè)參數(shù)只在模擬 mouseover 或 mouseout時(shí)使用。
initMouseEvent() 方法的這些參數(shù)是與鼠標(biāo)事件的 event 對(duì)象所包含的屬性一一對(duì)應(yīng)的。其中,前 4 個(gè)參數(shù)對(duì)正確地激發(fā)事件至關(guān)重要,因?yàn)闉g覽器要用到這些參數(shù);而剩下的所有參數(shù)只有在事件處理程序中才會(huì)用到。當(dāng)把 event 對(duì)象傳給 dispatchEvent() 方法時(shí),這個(gè)對(duì)象的 target屬性會(huì)自動(dòng)設(shè)置。
var btn = document.getElementById("myBtn"); //創(chuàng)建事件對(duì)象 var event = document.createEvent("MouseEvents"); //初始化事件對(duì)象 event.initMouseEvent("click", true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0, null); //觸發(fā)事件 btn.dispatchEvent(event);
模擬鍵盤(pán)事件
調(diào)用 createEvent() 并傳入"KeyboardEvent" 就可以創(chuàng)建一個(gè)鍵盤(pán)事件。返回的事件對(duì)象會(huì)包含一個(gè) initKeyEvent() 方法,這個(gè)方法接收下列參數(shù)。
type (字符串):表示要觸發(fā)的事件類型,如 "keydown" 。
bubbles (布爾值):表示事件是否應(yīng)該冒泡。為精確模擬鼠標(biāo)事件,應(yīng)該設(shè)置為 true 。
cancelable (布爾值):表示事件是否可以取消。為精確模擬鼠標(biāo)事件,應(yīng)該設(shè)置為 true 。
view ( AbstractView ):與事件關(guān)聯(lián)的視圖。這個(gè)參數(shù)幾乎總是要設(shè)置為 document.defaultView 。
key (布爾值):表示按下的鍵的鍵碼。
location (整數(shù)):表示按下了哪里的鍵。0 表示默認(rèn)的主鍵盤(pán),1 表示左,2 表示右,3 表示 數(shù)字鍵盤(pán),4表示移動(dòng)設(shè)備(即虛擬鍵盤(pán)),5 表示手柄。
modifiers (字符串):空格分隔的修改鍵列表,如 "Shift" 。
repeat (整數(shù)):在一行中按了這個(gè)鍵多少次。
var textbox = document.getElementById("myTextbox"),event; if (document.implementation.hasFeature("KeyboardEvents", "3.0")){ event = document.createEvent("KeyboardEvent"); //初始化事件對(duì)象 event.initKeyboardEvent("keydown", true, true, document.defaultView, "a",0, "Shift", 0); } //觸發(fā)事件 textbox.dispatchEvent(event)
模擬其他事件
模擬變動(dòng)事件和HTML 事件。
var event = document.createEvent("HTMLEvents"); event.initEvent("focus", true, false); target.dispatchEvent(event);
自定義 DOM 事件
自定義事件不是由 DOM 原生觸發(fā)的,它的目的是讓開(kāi)發(fā)人員創(chuàng)建自己的事件。要?jiǎng)?chuàng)建新的自定義事件,可調(diào)用 createEvent("CustomEvent") 。返回的對(duì)象有一個(gè)名為 initCustomEvent() 的方法。
type (字符串):觸發(fā)的事件類型,例如 "keydown"。
bubbles (布爾值):表示事件是否應(yīng)該冒泡。
cancelable (布爾值):表示事件是否可以取消。
detail (對(duì)象):任意值,保存在 event 對(duì)象的 detail 屬性中。
var div = document.getElementById("myDiv"),event; EventUtil.addHandler(div, "myevent", function(event){ alert("DIV: " + event.detail); }); EventUtil.addHandler(document, "myevent", function(event){ alert("DOCUMENT: " + event.detail); }); if (document.implementation.hasFeature("CustomEvents", "3.0")){ event = document.createEvent("CustomEvent"); event.initCustomEvent("myevent", true, false, "Hello world!"); div.dispatchEvent(event); }IE中的事件模擬
調(diào)用 document.createEventObject() 方法可以在 IE 中創(chuàng)建 event對(duì)象。(不接受參數(shù),結(jié)果會(huì)返回一個(gè)通用的 event 對(duì)象)
目標(biāo)上調(diào)用 fireEvent()方法,這個(gè)方法接受兩個(gè)參數(shù):事件處理程序的名稱和 event 對(duì)象。
var btn = document.getElementById("myBtn"); //創(chuàng)建事件對(duì)象 var event = document.createEventObject(); //初始化事件對(duì)象 event.screenX = 100; event.screenY = 0; event.clientX = 0; event.clientY = 0; event.ctrlKey = false; event.altKey = false; event.shiftKey = false; event.button = 0; //觸發(fā)事件 btn.fireEvent("onclick", event);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89881.html
摘要:前言今天和大家一起聊聊的推薦書(shū)籍,每一本都是精選,做前端開(kāi)發(fā)的朋友們?nèi)绻麤](méi)讀過(guò),可以嘗試一下。如果怕麻煩,也可以關(guān)注曉舟報(bào)告,發(fā)送獲取書(shū)籍,四個(gè)字,就可以得到電子書(shū)的提取碼。 前言 今天和大家一起聊聊JavaScript的推薦書(shū)籍,每一本都是精選,做前端開(kāi)發(fā)的朋友們?nèi)绻麤](méi)讀過(guò),可以嘗試一下。下面給大家簡(jiǎn)單介紹了書(shū)的內(nèi)容,還有讀書(shū)的方法,希望可以幫大家提升讀書(shū)效率。 一、《JavaScr...
摘要:定場(chǎng)詩(shī)守法朝朝憂悶,強(qiáng)梁夜夜歡歌損人利己騎馬騾,正值公平挨餓修橋補(bǔ)路瞎眼,殺人放火兒多我到西天問(wèn)我佛,佛說(shuō)我也沒(méi)轍前言讀學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法第章數(shù)組,本小節(jié)將繼續(xù)為各位小伙伴分享數(shù)組的相關(guān)知識(shí)數(shù)組的新功能。 定場(chǎng)詩(shī) 守法朝朝憂悶,強(qiáng)梁夜夜歡歌; 損人利己騎馬騾,正值公平挨餓; 修橋補(bǔ)路瞎眼,殺人放火兒多; 我到西天問(wèn)我佛,佛說(shuō):我也沒(méi)轍! 前言 讀《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法...
摘要:其中負(fù)載均衡那一節(jié),基本上是參考的權(quán)威指南負(fù)載均衡的內(nèi)容。開(kāi)發(fā)指南讀了一半,就是看這本書(shū)理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢的書(shū)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由騰訊IVWEB團(tuán)隊(duì) 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來(lái),自己接觸web前端開(kāi)發(fā)已經(jīng)兩年多了,記錄一下自己前端學(xué)習(xí)路上看過(guò)的,以及道聽(tīng)途說(shuō)的一些書(shū),基本上按照由淺入深來(lái)介紹...
摘要:其中負(fù)載均衡那一節(jié),基本上是參考的權(quán)威指南負(fù)載均衡的內(nèi)容。開(kāi)發(fā)指南讀了一半,就是看這本書(shū)理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢的書(shū)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由騰訊IVWEB團(tuán)隊(duì) 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來(lái),自己接觸web前端開(kāi)發(fā)已經(jīng)兩年多了,記錄一下自己前端學(xué)習(xí)路上看過(guò)的,以及道聽(tīng)途說(shuō)的一些書(shū),基本上按照由淺入深來(lái)介紹...
閱讀 3391·2023-04-25 14:07
閱讀 3458·2021-09-28 09:35
閱讀 2091·2019-08-30 15:55
閱讀 1405·2019-08-30 13:48
閱讀 2502·2019-08-30 13:16
閱讀 3202·2019-08-30 12:54
閱讀 3238·2019-08-30 11:19
閱讀 1876·2019-08-29 17:17