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