成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《Javascript高級程序設(shè)計 (第三版)》第13章 事件

tinylcy / 982人閱讀

摘要:一般化的變動事件。沒有對應(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

相關(guān)文章

  • JavaScript書籍測評

    摘要:前言今天和大家一起聊聊的推薦書籍,每一本都是精選,做前端開發(fā)的朋友們?nèi)绻麤]讀過,可以嘗試一下。如果怕麻煩,也可以關(guān)注曉舟報告,發(fā)送獲取書籍,四個字,就可以得到電子書的提取碼。 前言 今天和大家一起聊聊JavaScript的推薦書籍,每一本都是精選,做前端開發(fā)的朋友們?nèi)绻麤]讀過,可以嘗試一下。下面給大家簡單介紹了書的內(nèi)容,還有讀書的方法,希望可以幫大家提升讀書效率。 一、《JavaScr...

    X1nFLY 評論0 收藏0
  • 重讀《學習JavaScript數(shù)據(jù)結(jié)構(gòu)與算法-三版》- 3 數(shù)組(二)

    摘要:定場詩守法朝朝憂悶,強梁夜夜歡歌損人利己騎馬騾,正值公平挨餓修橋補路瞎眼,殺人放火兒多我到西天問我佛,佛說我也沒轍前言讀學習數(shù)據(jù)結(jié)構(gòu)與算法第章數(shù)組,本小節(jié)將繼續(xù)為各位小伙伴分享數(shù)組的相關(guān)知識數(shù)組的新功能。 定場詩 守法朝朝憂悶,強梁夜夜歡歌; 損人利己騎馬騾,正值公平挨餓; 修橋補路瞎眼,殺人放火兒多; 我到西天問我佛,佛說:我也沒轍! 前言 讀《學習JavaScript數(shù)據(jù)結(jié)構(gòu)與算法...

    William_Sang 評論0 收藏0
  • 如果想成為一名頂尖的前端,這份書單你一定要收藏!

    摘要:其中負載均衡那一節(jié),基本上是參考的權(quán)威指南負載均衡的內(nèi)容。開發(fā)指南讀了一半,就是看這本書理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢的書。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實踐干貨哦~ 本文由騰訊IVWEB團隊 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來,自己接觸web前端開發(fā)已經(jīng)兩年多了,記錄一下自己前端學習路上看過的,以及道聽途說的一些書,基本上按照由淺入深來介紹...

    callmewhy 評論0 收藏0
  • 如果想成為一名頂尖的前端,這份書單你一定要收藏!

    摘要:其中負載均衡那一節(jié),基本上是參考的權(quán)威指南負載均衡的內(nèi)容。開發(fā)指南讀了一半,就是看這本書理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢的書。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實踐干貨哦~ 本文由騰訊IVWEB團隊 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來,自己接觸web前端開發(fā)已經(jīng)兩年多了,記錄一下自己前端學習路上看過的,以及道聽途說的一些書,基本上按照由淺入深來介紹...

    Scliang 評論0 收藏0

發(fā)表評論

0條評論

tinylcy

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<