成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

高程3總結(jié)#第13章事件

RyanQ / 2684人閱讀

摘要:所有節(jié)點(diǎn)中都包含這兩個(gè)方法,并且它們都接受個(gè)參數(shù)要處理的事件名,作為事件處理程序的函數(shù)和一個(gè)布爾值。和支持這個(gè)事件。

事件 事件流

事件流描述的是從頁(yè)面中接收事件的順序

事件冒泡

IE的事件流叫做事件冒泡,即事件開(kāi)始時(shí)由最具體的元素(文檔中嵌套層次最深的那個(gè)節(jié)點(diǎn))接收,然后逐級(jí)向上傳播到較為不具體的節(jié)點(diǎn)

事件捕獲

事件捕獲的思想是不太具體的節(jié)點(diǎn)應(yīng)該更早接收到事件,而最具體的節(jié)點(diǎn)應(yīng)該最后接收到事件,事件捕獲的用意在于在事件到達(dá)預(yù)定目標(biāo)之前捕獲它。

DOM事件流

DOM2級(jí)事件規(guī)定的事件流包括三個(gè)階段:事件捕獲階段,處于目標(biāo)階段和事件冒泡階段

事件處理程序 HTML事件處理程序

某個(gè)元素支持的每種事件都可以使用一個(gè)與相應(yīng)事件處理程序同名的HTML特性來(lái)指定,這個(gè)特性的值應(yīng)該是能夠執(zhí)行的JavaScript代碼

DOM0級(jí)事件處理程序

每個(gè)元素,包括window和document都有自己的事件處理程序?qū)傩?,這些屬性通常全部小寫

var btn=document.getElementById("myBtn");
btn.onclick=function(){
  alert("Clicked");
};

DOM2級(jí)事件處理程序

DOM2級(jí)事件定義了兩個(gè)方法,用于處理指定和刪除事件處理程序的操作,addEventListener()和removeEventListener()。所有DOM節(jié)點(diǎn)中都包含這兩個(gè)方法,并且它們都接受3個(gè)參數(shù):要處理的事件名,作為事件處理程序的函數(shù)和一個(gè)布爾值。最后這個(gè)布爾值參數(shù)如果是true,表示在捕獲階段調(diào)用事件處理程序,如果是false,表示在冒泡階段調(diào)用事件處理程序

var btn=document.getElementById("myBtn");
btn.addEventListener("click",function()){
  alert(this.id);
},false);
btn.addEventListener("click",function(){
  alert("Hello world!");
},false)

通過(guò)addEventListener()添加的事件處理程序只能使用removeEventListener()來(lái)移除,移除時(shí)傳入的參數(shù)與添加處理程序時(shí)使用的參數(shù)相同,這也意味著通過(guò)addEventListener()來(lái)添加的匿名函數(shù)將無(wú)法移除

IE事件處理程序

IE實(shí)現(xiàn)了與DOM中蕾西的兩個(gè)方法,attachEvent()和detachEvent()。這兩個(gè)方法接收相同的兩個(gè)參數(shù),事件處理程序和事件處理程序函數(shù)

跨瀏覽器的事件處理程序

要保證處理事件的代碼能在大多數(shù)瀏覽器下一致地運(yùn)行,只需關(guān)注冒泡階段

第一個(gè)要?jiǎng)?chuàng)建的方法是addHandler(),它的職責(zé)是視情況分別使用DOM0級(jí)方法,DOM2級(jí)方法或IE方法來(lái)添加時(shí)間,這個(gè)方法屬于一個(gè)名叫EventUtil的對(duì)象。addHandler()方法接收3個(gè)參數(shù):要操作的元素、事件名稱和事件處理程序函數(shù)

與addHandler()對(duì)應(yīng)的方法是removeHandler()它也接收相同的參數(shù),這個(gè)方法的職責(zé)是移除之前添加的事件處理程序,無(wú)論事件處理程序時(shí)采取什么方式添加到元素中的,如果其他方法無(wú)效,默認(rèn)采用DOM0級(jí)方法

事件對(duì)象 DOM中的事件對(duì)象

兼容DOM的瀏覽器會(huì)將一個(gè)event對(duì)象傳入到事件處理程序中,無(wú)論指定事件處理程序使用什么方法,都會(huì)傳入event對(duì)象

IE中的事件對(duì)象

事件類型

DOM3級(jí)事件規(guī)定以下幾類事件

UI事件,當(dāng)用戶與頁(yè)面上的元素交互時(shí)觸發(fā)

焦點(diǎn)事件,當(dāng)元素獲得或失去焦點(diǎn)時(shí)觸發(fā)

鼠標(biāo)事件,當(dāng)用戶通過(guò)鼠標(biāo)在頁(yè)面上執(zhí)行操作時(shí)觸發(fā)

滾輪事件,當(dāng)使用鼠標(biāo)滾輪時(shí)觸發(fā)

文本事件,當(dāng)在文檔中輸入文本時(shí)觸發(fā)

鍵盤事件,當(dāng)用戶通過(guò)鍵盤在頁(yè)面上執(zhí)行操作時(shí)觸發(fā)

合成事件,當(dāng)為IME輸入字符時(shí)觸發(fā)

變動(dòng)事件,當(dāng)?shù)讓覦OM結(jié)構(gòu)發(fā)生變化時(shí)觸發(fā)

變動(dòng)名稱事件,當(dāng)元素或?qū)傩悦儎?dòng)時(shí)觸發(fā),已廢棄

UI事件

UI事件指的是那些不一定與用戶操作有關(guān)的事件

DOMActivate,表示元素已經(jīng)被用戶操作,通過(guò)鼠標(biāo)或鍵盤激活

load,當(dāng)頁(yè)面完全加載后在window上面觸發(fā),當(dāng)所有的框架都加載完畢時(shí)在框架集上面觸發(fā),當(dāng)圖像加載完畢時(shí)在元素上觸發(fā),或者嵌入的內(nèi)容加載完畢時(shí)在元素上面觸發(fā)

unload,當(dāng)頁(yè)面完全卸載后在window上面觸發(fā),當(dāng)左右框架都卸載后在框架上面觸發(fā),或者當(dāng)嵌入的內(nèi)容卸載完畢后在元素上面觸發(fā)

abort,在用戶停止下載過(guò)程時(shí),如果嵌入的內(nèi)容沒(méi)有加載完,則在元素上面觸發(fā)

error,當(dāng)大聲在JavaScript錯(cuò)誤時(shí)在window上面觸發(fā),當(dāng)無(wú)法加載圖像時(shí)在元素上面觸發(fā),當(dāng)無(wú)法加載嵌入內(nèi)容時(shí),在元素上面觸發(fā),或者當(dāng)有一個(gè)或多個(gè)框架無(wú)法加載時(shí)在框架集上面觸發(fā)

select,當(dāng)用戶選擇文本框中一個(gè)或多個(gè)字符時(shí)觸發(fā)

resize,當(dāng)窗口或框架的大小變化時(shí)在window或框架上面觸發(fā)

scroll,當(dāng)用戶滾動(dòng)帶滾動(dòng)條的元素中的內(nèi)容時(shí),在該元素上面觸發(fā),元素匯總包含所加載頁(yè)面的滾動(dòng)條

焦點(diǎn)事件

焦點(diǎn)事件會(huì)在頁(yè)面元素獲得或失去焦點(diǎn)時(shí)觸發(fā)

blur,在元素失去焦點(diǎn)時(shí)觸發(fā),事件不會(huì)冒泡,所有瀏覽器都支持

DOMFocusIn,在元素獲得焦點(diǎn)時(shí)觸發(fā),這個(gè)時(shí)間與HTML事件focus等價(jià),但是冒泡,只有Opera支持這個(gè)事件,DOM3級(jí)事件廢棄了DOMFocusIn,選擇了focusin

DOMFocusOut,在元素失去焦點(diǎn)時(shí)觸發(fā),這個(gè)事件是HTML事件blur的通用版本,室友Opera支持這個(gè)事件,DOM3級(jí)事件廢棄了DOMFocusOut,選擇了focusout

focus,在元素獲得焦點(diǎn)時(shí)觸發(fā),這個(gè)事件不會(huì)冒泡,所有瀏覽器都支持它

focusin,在元素獲得焦點(diǎn)時(shí)觸發(fā),這個(gè)事件與HTML事件focus等價(jià),但它冒泡,支持這個(gè)事件的瀏覽器有IE5.5+、Safari5.1+、Opera11.5+和Chrome

focusout,在元素失去焦點(diǎn)時(shí)觸發(fā),這個(gè)事件是HTML事件blur的通用版本,支持這個(gè)事件的瀏覽器有IE5.5+、Safari5.1+、Opera11.5+和Chrome

當(dāng)焦點(diǎn)從頁(yè)面中的一個(gè)元素移動(dòng)到另一個(gè)元素

focusout在失去焦點(diǎn)的元素上觸發(fā)

focusin在獲得焦點(diǎn)的元素上觸發(fā)

blur在失去焦點(diǎn)的元素上觸發(fā)

DOMFocusOut在失去焦點(diǎn)的元素上觸發(fā)

focus在獲得焦點(diǎn)的元素上觸發(fā)

DOMFocusIn在獲得焦點(diǎn)的元素上觸發(fā)

鼠標(biāo)與滾輪事件

鼠標(biāo)事件是Web開(kāi)發(fā)中最常用的一類事件

click,在用戶單擊主鼠標(biāo)按鈕(一般是左邊的按鈕)或者按下回車鍵時(shí)觸發(fā)。這一點(diǎn)對(duì)確保易訪問(wèn)性很重要,意味著 onclick 事件處理程序既可以通過(guò)鍵盤也可以通過(guò)鼠標(biāo)執(zhí)行。

dblclick,在用戶雙擊主鼠標(biāo)按鈕(一般是左邊的按鈕)時(shí)觸發(fā)。從技術(shù)上說(shuō),這個(gè)事件并不是 DOM2 級(jí)事件規(guī)范中規(guī)定的,但鑒于它得到了廣泛支持,所以 DOM3 級(jí)事件將其納入了標(biāo)準(zhǔn)。

mousedown,在用戶按下了任意鼠標(biāo)按鈕時(shí)觸發(fā)。不能通過(guò)鍵盤觸發(fā)這個(gè)事件。

mouseenter,在鼠標(biāo)光標(biāo)從元素外部首次移動(dòng)到元素范圍之內(nèi)時(shí)觸發(fā)。這個(gè)事件不冒泡,而且在光標(biāo)移動(dòng)到后代元素上不會(huì)觸發(fā)。DOM2 級(jí)事件并沒(méi)有定義這個(gè)事件,但 DOM3 級(jí)事件將它納入了規(guī)范。IE、Firefox 9+和 Opera 支持這個(gè)事件。

mouseleave,在位于元素上方的鼠標(biāo)光標(biāo)移動(dòng)到元素范圍之外時(shí)觸發(fā)。這個(gè)事件不冒泡,而且在光標(biāo)移動(dòng)到后代元素上不會(huì)觸發(fā)。DOM2 級(jí)事件并沒(méi)有定義這個(gè)事件,但 DOM3 級(jí)事件將它納入了規(guī)范。IE、Firefox 9+和 Opera 支持這個(gè)事件。

mousemove,當(dāng)鼠標(biāo)指針在元素內(nèi)部移動(dòng)時(shí)重復(fù)地觸發(fā)。不能通過(guò)鍵盤觸發(fā)這個(gè)事件。

mouseout,在鼠標(biāo)指針位于一個(gè)元素上方,然后用戶將其移入另一個(gè)元素時(shí)觸發(fā)。又移入的另一個(gè)元素可能位于前一個(gè)元素的外部,也可能是這個(gè)元素的子元素。不能通過(guò)鍵盤觸發(fā)這個(gè)事件。

mouseover,在鼠標(biāo)指針位于一個(gè)元素外部,然后用戶將其首次移入另一個(gè)元素邊界之內(nèi)時(shí)觸發(fā)。不能通過(guò)鍵盤觸發(fā)這個(gè)事件。

mouseup,在用戶釋放鼠標(biāo)按鈕時(shí)觸發(fā)。不能通過(guò)鍵盤觸發(fā)這個(gè)事件。

發(fā)生位置

客戶區(qū)坐標(biāo)位置,clientX和clientY

頁(yè)面坐標(biāo)位置,pageX和pageY

屏幕坐標(biāo)位置,screenX和screenY

修改鍵

規(guī)定4個(gè)屬性,shiftKey、ctrlKey、altKey和metaKey

這些屬性中包含的都是布爾值,如果相應(yīng)的鍵被按下,則值為true,否則為false

鼠標(biāo)按鈕

0,表示沒(méi)有按下按鈕

1,表示按下了主鼠標(biāo)按鈕

2,表示按下了次鼠標(biāo)按鈕

3,表示同時(shí)按下了主、次鼠標(biāo)按鈕

4,表示按下了中間的鼠標(biāo)按鈕

5,表示同時(shí)按下了主鼠標(biāo)按鈕和中間的鼠標(biāo)按鈕

6,表示同時(shí)按下了次鼠標(biāo)按鈕和中間的鼠標(biāo)按鈕

7,表示同時(shí)按下了三個(gè)鼠標(biāo)按鈕

更多的事件信息

altLeft,布爾值,表示是否按下了Alt鍵,如果altLeft值為true,則altKey值也為true

ctrlLeft,布爾值,表示是否按下了Ctrl鍵,如果ctrlLeft值為true,則ctrlKey值為true

offsetX,光標(biāo)相對(duì)于目標(biāo)元素邊界的x坐標(biāo)

offsetY,光標(biāo)相對(duì)于目標(biāo)元素邊界的y坐標(biāo)

shiftLeft,布爾值,表示是否按下了Shift鍵,如果shiftLeft值為true,則shiftKey值為true

鼠標(biāo)滾輪事件

與mousewheel事件對(duì)應(yīng)的event對(duì)象除包含鼠標(biāo)事件的所有標(biāo)準(zhǔn)信息外,還包含一個(gè)特殊的wheelDelta屬性,當(dāng)用戶向前滾動(dòng)鼠標(biāo)滾輪時(shí),wheelDelta是120的倍數(shù),當(dāng)用戶向后滾動(dòng)鼠標(biāo)滾輪時(shí),wheelDelta是-120的倍數(shù)

觸摸設(shè)備

不支持dbclick事件,雙擊瀏覽器窗口會(huì)放大畫面,而且沒(méi)有辦法改變?cè)撔袨?/p>

輕擊可單擊元素會(huì)觸發(fā)mousemove事件,如果此操作會(huì)導(dǎo)致內(nèi)容變化,將不再有其他事件發(fā)生,如果屏幕沒(méi)有因此變化,那么會(huì)一次發(fā)生mousedown、mouseup和click事件,輕擊不可單擊的元素不會(huì)觸發(fā)任何事件,可單擊的元素指的是那些單擊可產(chǎn)生默認(rèn)操作得元素,或者那些已經(jīng)被指定了onclick事件處理程序的元素

mousemove事件也會(huì)觸發(fā)mouseover和mouseout事件

兩個(gè)手指放在屏幕上且頁(yè)面隨手指移動(dòng)而滾動(dòng)時(shí)會(huì)觸發(fā)mousewheel和scroll事件

鍵盤與文本事件

3個(gè)鍵盤事件

keydown,當(dāng)用戶按下鍵盤上的任意鍵時(shí)觸發(fā),而且如果按住不放的話,會(huì)重復(fù)觸發(fā)此事件

keypress,當(dāng)用戶按下鍵盤上的字符鍵時(shí)觸發(fā),而且如果按住不放的話,會(huì)重復(fù)觸發(fā)此事件

keyup,當(dāng)用戶釋放鍵盤上的鍵時(shí)觸發(fā)

鍵碼

textInput事件,event對(duì)象上一個(gè)屬性,叫inputMethod,表示把文本輸入到文本框中的方式

0,表示瀏覽器不確定是怎么輸入的

1,表示是使用鍵盤輸入的

2,表示文本是粘貼進(jìn)來(lái)的

3,表示文本是拖放進(jìn)來(lái)的

4,表示文本是使用IME輸入的

5,表示文本是通過(guò)在表單中選擇某一項(xiàng)輸入的

6,表示文本是通過(guò)手寫輸入的

7,表示文本是通過(guò)語(yǔ)音輸入的

8,表示文本是通過(guò)幾種方法組合輸入的

9,表示文本是通過(guò)腳本輸入的

復(fù)合事件

用于處理IME的輸入序列

compositionstart,在IME的文本復(fù)合系統(tǒng)打開(kāi)時(shí)觸發(fā),表示要開(kāi)始輸入了

compositionupdate,在向輸入字段中插入新字符時(shí)觸發(fā)

compositionend,在IME的文本復(fù)合系統(tǒng)關(guān)閉時(shí)觸發(fā),表示返回正常鍵盤輸入狀態(tài)

復(fù)合事件與文本事件在很多方面都很相似,在觸發(fā)復(fù)合事件時(shí),目標(biāo)是接收文本的輸入字段,但它比文本事件的事件對(duì)象多一個(gè)屬性data

如果compositionstart事件發(fā)生時(shí)訪問(wèn),包含正在編輯的文本

如果在compositionupdate事件發(fā)生時(shí)訪問(wèn),包含正插入的新字符

如果在compositionend事件發(fā)生時(shí)訪問(wèn),包含此次輸入會(huì)話中插入的所有字符

變動(dòng)事件

在DOM中的某一部分發(fā)生變化時(shí)給出提示,變動(dòng)事件是為XML或HTML DOM設(shè)計(jì)的,并不特定某種語(yǔ)言

DOMSubtreeModified,在DOM結(jié)構(gòu)中發(fā)生任何變化時(shí)觸發(fā),這個(gè)事件在其他任何事件觸發(fā)后都會(huì)觸發(fā)

DOMNodeInserted,在一個(gè)節(jié)點(diǎn)作為子節(jié)點(diǎn)被插入到另一個(gè)節(jié)點(diǎn)中時(shí)觸發(fā)

DOMNodeRemoved,在節(jié)點(diǎn)從其父元素中被移除時(shí)觸發(fā)

DOMNodeInsertedIntoDocument,在一個(gè)節(jié)點(diǎn)被直接插入文檔或通過(guò)子樹(shù)間接插入文檔之后觸發(fā)

DOMNodeRemovedFromDocument,在一個(gè)節(jié)點(diǎn)被直接從文檔中移除或通過(guò)子樹(shù)間接從文檔中移除之前觸發(fā)

DOMAttrModified,在特性被修改之后觸發(fā)

DOMCharacterDataModified,在文本節(jié)點(diǎn)的值發(fā)生變化時(shí)觸發(fā)

刪除節(jié)點(diǎn)

在使用removeChild()或replaceChild()從DOM中刪除節(jié)點(diǎn)時(shí),首先會(huì)觸發(fā)DOMNodeRemoved事件

緊隨其后觸發(fā)的是DOMSubtreeModified事件,這個(gè)事件的目標(biāo)是被移除節(jié)點(diǎn)的父節(jié)點(diǎn),此時(shí)的event對(duì)象也不會(huì)提供與事件相關(guān)的其他信息

插入節(jié)點(diǎn)

在使用appendChild()、replaceChild()或insertBefore()向DOM中插入節(jié)點(diǎn)時(shí),首先會(huì)觸發(fā)DOMNodeInserted事件,這個(gè)事件的目標(biāo)是被插入的節(jié)點(diǎn)

緊接著會(huì)在新插入的節(jié)點(diǎn)上面觸發(fā)DOMNodeInsertedIntDocument事件,這個(gè)事件不冒泡,因此必須在插入節(jié)點(diǎn)之前為它添加這個(gè)事件處理程序

最后一個(gè)觸發(fā)的是DOMSubtreeModified,觸發(fā)于新插入節(jié)點(diǎn)的父節(jié)點(diǎn)

HTML5事件

contextmenu事件,用以表示何時(shí)應(yīng)該顯示上下文菜單,以便開(kāi)發(fā)人員取消默認(rèn)的上下文菜單而提供自定義的菜單

beforeunload事件,為了讓開(kāi)發(fā)人員有可能在頁(yè)面卸載前阻止這一個(gè)操作,這個(gè)事件會(huì)在瀏覽器卸載頁(yè)面之前觸發(fā),可以通過(guò)它來(lái)取消卸載并繼續(xù)使用原有頁(yè)面

readystatechange事件,目的是提供與文檔或元素加載狀態(tài)有關(guān)的信息,但這個(gè)事件的行為有時(shí)候也難預(yù)料,支持readystatechange事件的每個(gè)對(duì)象都有一個(gè)readyState屬性

uninitialized,對(duì)象存在但尚未初始化

loading,對(duì)象正在加載數(shù)據(jù)

loaded,對(duì)象加載數(shù)據(jù)完成

interactive,可以操作對(duì)象了,但還沒(méi)有完全加載

complete,對(duì)象已經(jīng)加載完畢

pageshow事件,在頁(yè)面顯示時(shí)觸發(fā),無(wú)論該頁(yè)面是否來(lái)自bfcache,在重新加載的頁(yè)面中,pageshow會(huì)在load事件觸發(fā)后觸發(fā),而對(duì)于bfcache中的頁(yè)面,pageshow會(huì)在頁(yè)面狀態(tài)完全恢復(fù)的那一刻觸發(fā)

pagehide事件,在瀏覽器卸載頁(yè)面的時(shí)候觸發(fā),而且是在unload事件之前觸發(fā),與pageshow事件一樣,pagehide在document上面觸發(fā),但其事件處理程序必須要添加到window對(duì)象

hashchange事件,在URL參數(shù)列表發(fā)生變化時(shí),通知開(kāi)發(fā)人員。之所以新增這個(gè)事件,是因?yàn)樵贏jax應(yīng)用中,開(kāi)發(fā)人員經(jīng)常要利用URL參數(shù)列表來(lái)保存狀態(tài)或?qū)Ш叫畔?/p> 設(shè)備事件

orientationchange事件,以便開(kāi)發(fā)人員能夠確定用戶何時(shí)將設(shè)備由橫向查看模式切換為縱向查看模式。0表示肖像模式,90表示向左旋轉(zhuǎn)的橫向模式,-90表示向右旋轉(zhuǎn)的橫向模式

MozOrientation事件,當(dāng)設(shè)備的加速計(jì)檢測(cè)到設(shè)備方向改變時(shí),就會(huì)觸發(fā)這個(gè)事件

event對(duì)象包含三個(gè)屬性,x、y、z,這幾個(gè)屬性的值都介于1到-1之間,表示不同坐標(biāo)軸上的方向。在靜止?fàn)顟B(tài)下,x值為0,y值為0,z值為1。如果設(shè)備向右傾斜,x值會(huì)減??;反之向左傾斜,x值會(huì)增大。類似的,如果設(shè)備向遠(yuǎn)離用戶的方向傾斜,y值會(huì)減小,向接近用戶的方向傾斜,y值會(huì)增大。z軸檢測(cè)垂直加速度,1表示靜止不動(dòng),在設(shè)備移動(dòng)時(shí),值會(huì)減小,失重狀態(tài)下值為0

deviceorientation事件與Mozorientation事件類似,它也是在加速計(jì)檢測(cè)到設(shè)備方向變化時(shí),在window對(duì)象上觸發(fā),而且具有與MozOrientation事件相同的支持限制。不過(guò)deviceorientation事件的意圖是告訴開(kāi)發(fā)人員設(shè)備在空間中朝向哪兒,而不是如何移動(dòng)

觸發(fā)deviceorientation事件時(shí),事件對(duì)象中包含著每個(gè)軸相對(duì)于設(shè)備靜止?fàn)顟B(tài)下發(fā)生變化的信息,包含5個(gè)屬性

alpha,在圍繞z軸旋轉(zhuǎn)時(shí)(左右旋轉(zhuǎn)),y軸的度數(shù)差,是一個(gè)介于0到360之間的浮點(diǎn)數(shù)

beta,在圍繞x軸旋轉(zhuǎn)時(shí)(前后旋轉(zhuǎn)),z軸的度數(shù)差,是一個(gè)介于-180到180度之間的浮點(diǎn)數(shù)

gamma,在圍繞y軸旋轉(zhuǎn)時(shí)(扭轉(zhuǎn)設(shè)備),z軸的度數(shù)差,是一個(gè)介于-90到90之間的浮點(diǎn)數(shù)

absolute,布爾值,表示設(shè)備是否返回一個(gè)絕對(duì)值

compassCalibrated,布爾值,表示設(shè)備的指南針是否校準(zhǔn)過(guò)

devicemotion事件,告訴開(kāi)發(fā)人員設(shè)備什么時(shí)候移動(dòng),而不僅僅是設(shè)備方向如何改變

acceleration,一個(gè)包含x、y和z屬性的對(duì)象,在不考慮重力的情況下,說(shuō)明每個(gè)方向上的加速度

accelerationIncludingGravuty,一個(gè)包含x、y和z屬性的對(duì)象,在考慮z軸自然重力加速度的情況下,說(shuō)明每個(gè)方向上的加速度

interval,以毫秒表示的時(shí)間值,必須在另一個(gè)devicemotion事件觸發(fā)前傳入,這個(gè)值在每個(gè)事件中應(yīng)該是一個(gè)常量

rotationRate,一個(gè)包含表示方向的alpha、beta和gamma屬性的對(duì)象

觸摸與手勢(shì)事件

觸摸事件

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)手指從屏幕上移開(kāi)時(shí)觸發(fā)。

touchcancel :當(dāng)系統(tǒng)停止跟蹤觸摸時(shí)觸發(fā)。關(guān)于此事件的確切觸發(fā)時(shí)間,文檔中沒(méi)有明確說(shuō)明。

除了常見(jiàn)的DOM屬性之外,觸摸事件還包含三個(gè)用于跟蹤觸摸的屬性

touches,表示當(dāng)前跟蹤的觸摸操作的 Touch 對(duì)象的數(shù)組。

targetTouchs,特定于事件目標(biāo)的 Touch 對(duì)象的數(shù)組。

changeTouches,表示自上次觸摸以來(lái)發(fā)生了什么改變的 Touch 對(duì)象的數(shù)組。

每個(gè)Touch對(duì)象包含下列屬性

clientX,觸摸目標(biāo)在視口中的 x 坐標(biāo)。

clientY,觸摸目標(biāo)在視口中的 y 坐標(biāo)。

identifier,標(biāo)識(shí)觸摸的唯一 ID。

pageX,觸摸目標(biāo)在頁(yè)面中的 x 坐標(biāo)。

pageY,觸摸目標(biāo)在頁(yè)面中的 y 坐標(biāo)。

screenX,觸摸目標(biāo)在屏幕中的 x 坐標(biāo)。

screenY,觸摸目標(biāo)在屏幕中的 y 坐標(biāo)。

target,觸摸的 DOM 節(jié)點(diǎn)目標(biāo)。

手勢(shì)事件

gesturestart,當(dāng)一個(gè)手指已經(jīng)按在屏幕上而另一個(gè)手指又觸摸屏幕時(shí)觸發(fā)。

gesturechange,當(dāng)觸摸屏幕的任何一個(gè)手指的位置發(fā)生變化時(shí)觸發(fā)。

gestureend,當(dāng)任何一個(gè)手指從屏幕上面移開(kāi)時(shí)觸發(fā)。

內(nèi)存和性能 事件委托

對(duì)"事件處理程序過(guò)多"問(wèn)題的解決方案,就是事件委托。事件委托利用了事件冒泡,只指定一個(gè)事件處理程序,就可以管理某一類型的所有事件

var item1 = document.getElementById("goSomewhere");
var item2 = document.getElementById("doSomething");
var item3 = document.getElementById("sayHi");
EventUtil.addHandler(item1, "click", function(event){
  location.;
});
EventUtil.addHandler(item2, "click", function(event){
  document.title = "I changed the document"s title";
});
EventUtil.addHandler(item3, "click", function(event){
  alert("hi");
});

模擬事件 DOM中的事件模擬

可以在document對(duì)象上使用createEvent()方法創(chuàng)建event對(duì)象,這個(gè)方法就是接收一個(gè)參數(shù),即表示要?jiǎng)?chuàng)建的事件類型的字符串

UIEvents,一般化的UI事件,鼠標(biāo)事件和鍵盤事件都繼承自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í)事件

模擬鼠標(biāo)事件

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í)使用。

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);

模擬鍵盤事件

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)的主鍵盤,1 表示左,2 表示右,3 表示數(shù)字鍵盤,4 表示移動(dòng)設(shè)備(即虛擬鍵盤),5 表示手柄。

modifiers(字符串),空格分隔的修改鍵列表,如 "Shift" 。

repeat(整數(shù)),在一行中按了這個(gè)鍵多少次。

var textbox = document.getElementById("myTextbox"),
    event;
//以 DOM3 級(jí)方式創(chuàng)建事件對(duì)象
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);

在Firefox中,調(diào)用createEvent()并傳入"KeyEvents"就可以創(chuàng)建一個(gè)鍵盤事件,返回的事件對(duì)象會(huì)包含一個(gè)initKeyEvent()方法,接收10個(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.default-View 。

ctrlKey(布爾值),表示是否按下了 Ctrl 鍵。默認(rèn)值為 false 。

altKey(布爾值),表示是否按下了 Alt 鍵。默認(rèn)值為 false 。

shiftKey(布爾值),表示是否按下了 Shift 鍵。默認(rèn)值為 false 。

metaKey(布爾值),表示是否按下了 Meta 鍵。默認(rèn)值為 false 。

keyCode(整數(shù)),被按下或釋放的鍵的鍵碼。這個(gè)參數(shù)對(duì) keydown 和 keyup 事件有用,默認(rèn)值為 0 。

charCode(整數(shù)),通過(guò)按鍵生成的字符的 ASCII 編碼。這個(gè)參數(shù)對(duì) keypress 事件有用,默認(rèn)值為 0 。

//只適用于 Firefox
var textbox = document.getElementById("myTextbox")
// 創(chuàng)建事件對(duì)象
var event = document.createEvent("KeyEvents");
// 初始化事件對(duì)象
event.initKeyEvent("keypress", true, true, document.defaultView, false, false,
false, false, 65, 65);
//觸發(fā)事件
textbox.dispatchEvent(event);

要?jiǎng)?chuàng)建新的自定義事件,可以調(diào)用createEvent("CustomEvent"),接收4個(gè)參數(shù)

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中的事件模擬

模擬一個(gè)按鈕觸發(fā)click事件過(guò)程

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);

模擬keypress事件

var textbox = document.getElementById("myTextbox");
//創(chuàng)建事件對(duì)象
var event = document.createEventObject();
//初始化事件對(duì)象
event.altKey = false;
event.ctrlKey = false;
event.shiftKey = false;
event.keyCode = 65;
//觸發(fā)事件
textbox.fireEvent("onkeypress", event);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/97889.html

相關(guān)文章

  • 高程3總結(jié)#17錯(cuò)誤處理與調(diào)試

    錯(cuò)誤處理與調(diào)試 錯(cuò)誤處理 try-catch語(yǔ)句 try{ //可能會(huì)導(dǎo)致錯(cuò)誤的代碼 }catch(error){ //在錯(cuò)誤發(fā)生時(shí)怎么處理 } 發(fā)生錯(cuò)誤時(shí)可以顯示瀏覽器給出的信息 try{ window.someNonexistentFunction(); }catch(error){ alert(error.message); } 在try-catch語(yǔ)句中是可選的,但...

    fizz 評(píng)論0 收藏0
  • 高程3總結(jié)#16HTML5腳本編程

    摘要:腳本編程跨文檔消息傳遞跨文檔消息傳送,簡(jiǎn)稱為,指的是來(lái)自不同域的頁(yè)面間傳遞消息的核心是方法,在規(guī)范中,除了部分之外的其他部分也會(huì)提到這個(gè)方法名,但都是為了同一個(gè)目的,向另一個(gè)地方傳遞參數(shù)。第一個(gè)頁(yè)面加載時(shí)為空 HTML5腳本編程 跨文檔消息傳遞 跨文檔消息傳送,簡(jiǎn)稱為XMD,指的是來(lái)自不同域的頁(yè)面間傳遞消息 XMD的核心是postMessage()方法,在HTML5規(guī)范中,除了XDM...

    silvertheo 評(píng)論0 收藏0
  • 高程3總結(jié)#1JavaScript簡(jiǎn)介

    摘要:簡(jiǎn)介簡(jiǎn)史誕生于年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。實(shí)現(xiàn)一個(gè)完整的由三部分組成核心文檔對(duì)象模型瀏覽器對(duì)象模型就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語(yǔ)言的描述。把整個(gè)頁(yè)面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。由萬(wàn)維網(wǎng)聯(lián)盟規(guī)劃。主要目標(biāo)是映射文檔的結(jié)構(gòu)。 JavaScript簡(jiǎn)介 JavaScript簡(jiǎn)史 JavaScript誕生于1995年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。 如果沒(méi)有表單驗(yàn)證的功能,填入信息之...

    betacat 評(píng)論0 收藏0
  • 高程3總結(jié)#25新興的API

    摘要:事件,當(dāng)文檔從可見(jiàn)變?yōu)椴豢梢?jiàn)或從不可見(jiàn)變?yōu)榭梢?jiàn)時(shí),觸發(fā)該事件要為兩個(gè)事件都指定事件處理程序?qū)ο蟀瑐€(gè)方法,接收個(gè)參數(shù)成功回調(diào)函數(shù)可選的失敗回調(diào)函數(shù)可選的選項(xiàng)對(duì)象。,事件已經(jīng)發(fā)生且執(zhí)行完所有事件處理程序的時(shí)間。 新興的API requestAnimationFrame() 早期動(dòng)畫循環(huán) 基本動(dòng)畫循環(huán) (function(){ function updateAnimations(){...

    NusterCache 評(píng)論0 收藏0
  • 高程3總結(jié)#14表單腳本

    表單腳本 表單的基礎(chǔ)知識(shí) HTMLFormElement有自己獨(dú)特的屬性和方法 acceptCharset,服務(wù)器能夠處理的字符集,等價(jià)于HTML中的accept-charset特性 action,接受請(qǐng)求的URL,等價(jià)于HTML中的action特性 elements,表單中所有控件的集合 enctype,請(qǐng)求的編碼類型,等價(jià)于HTML中的enctype特性 length,表單中控件的數(shù)量 m...

    Tony 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<