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