1. 程式人生 > >EventUtil——跨瀏覽器的事件物件

EventUtil——跨瀏覽器的事件物件

EventUtil物件全見

以下EventUtil物件程式碼親測可用,幷包含詳細註釋

[點選該物件中每一個方法名(綠色字型)可直接跳轉到本文中介紹該方法的部分]

var EventUtil={
	
   addHandler:function(element,type,handler){ //新增事件
      if(element.addEventListener){ 
         element.addEventListener(type,handler,false);  //使用DOM2級方法新增事件
      }else if(element.attachEvent){                    //使用IE方法新增事件
element.attachEvent("on"+type,handler); }else{ element["on"+type]=handler; //使用DOM0級方法新增事件 } }, removeHandler:function(element,type,handler){ //取消事件 if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if
(element.detachEvent){ element.detachEvent("on"+type,handler); }else{ element["on"+type]=null; } }, getEvent:function(event){ //使用這個方法跨瀏覽器取得event物件 return event?event:window.event; }, getTarget:function(event){ //返回事件的實際目標 return event
.target||event.srcElement; }, preventDefault:function(event){ //阻止事件的預設行為 if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue=false; } }, stopPropagation:function(event){ //立即停止事件在DOM中的傳播 //避免觸發註冊在document.body上面的事件處理程式 if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } }, getRelatedTarget:function(event){ //獲取mouseover和mouseout相關元素 if(event.relatedTarget){ return event.relatedTarget; }else if(event.toElement){ //相容IE8- return event.toElement; }else if(event.formElement){ return event.formElement; }else{ return null; } }, getButton:function(event){ //獲取mousedown或mouseup按下或釋放的按鈕是滑鼠中的哪一個 if(document.implementation.hasFeature("MouseEvents","2.0")){ return event.button; }else{ switch(event.button){ //將IE模型下的button屬性對映為DOM模型下的button屬性 case 0: case 1: case 3: case 5: case 7: return 0; //按下的是滑鼠主按鈕(一般是左鍵) case 2: case 6: return 2; //按下的是中間的滑鼠按鈕 case 4: return 1; //滑鼠次按鈕(一般是右鍵) } } }, getWheelDelta:function(event){ //獲取表示滑鼠滾輪滾動方向的數值 if(event.wheelDelta){ return event.wheelDelta; }else{ return -event.detail*40; } }, getCharCode:function(event){ //以跨瀏覽器取得相同的字元編碼,需在keypress事件中使用 if(typeof event.charCode=="number"){ return event.charCode; }else{ return event.keyCode; } } };

事實上,EventUtil是為了平衡不同瀏覽器間實現事件的差異或事件方法的差異而存在的

下文將詳細介紹這些差異和使用EventUtil的各種方法

相關推薦

EventUtil——瀏覽器事件物件工具函式

var EventUtil = { addEvent: function(element, type, handler) { // 新增繫結 if (element.addEventListener) { // 使用DOM2級方

EventUtil——瀏覽器事件物件

EventUtil物件全見 以下EventUtil物件程式碼親測可用,幷包含詳細註釋 [點選該物件中每一個方法名(綠色字型)可直接跳轉到本文中介紹該方法的部分] var EventUtil={ addHandler:function(element,type,handler){ //新

瀏覽器事件封裝

tar color UNC spa src eve and prevent elb var EventUtil = { // 添加事件處理程序 addHandler: function (element,type,handler) {

瀏覽器事件處理程式

var EventUtil = { addHandler: function(element, type, handler){ if (element.addEventListener){ element.addEventListener(type

【js事件詳解】js事件封裝函式,js瀏覽器事件處理機制

一、事件流 事件流描述的是從頁面中接受事件的順序。 IE的事件流是事件冒泡流,而Netscape的事件流是事件捕獲流 1、事件冒泡 事件冒泡,即事件最開始由最具體的元素(文件中巢狀層次最深的那個節點)接收,然後逐級向上轉播至最不具體的節點(文件)。 2、事件捕獲 事件捕獲的

javascript打造瀏覽器事件處理機制:詳解

由於瀏覽器相容的複雜性.打造一個較優的跨瀏覽器事件處理函式.不是件容易的事情.各大類庫也都通過了種種方案去抽象一個龐大的事件機制. 使用類庫可以比較容易的解決相容性問題.但這背後的機理又是如何呢? 下面我們就一點點鋪開來講. element.add

瀏覽器事件物件詳解

客戶端js程式採用了非同步事件驅動模型,每當我們點選或敲擊鍵盤時,瀏覽器就會產生事件,如果js程式關注特定型別的事件,那麼它可以註冊當這類事件發生時要呼叫的一個或多個處理函式。這種風格並不止應用於web程式設計,所有使用圖形使用者介面的應用程式都採用了它。它們等

瀏覽器事件物件

雖然DOM和IE中的event物件不同,但是基於他們之間的相似性依舊可以拿出跨瀏覽器的方案來。IE中的event物件的全部資訊和方法DOM物件中都有,只不過實現方式不一樣。不過這種對應關係讓實現兩種事

關於js事件物件(DOM中的事件物件、IE中的事件物件瀏覽器事件物件)的詳解

在觸發DOM上的某個事件時,會產生一個事件物件event,這個物件中包含著所有與事件有關的資訊。包括導致事件的元素、事件的型別以及其他與特定事件相關的資訊。例如,滑鼠操作導致的事件物件中,會包含滑鼠位置的資訊,而鍵盤操作導致的事件物件中,會包含與按下的鍵有關的資訊。所有瀏覽器

通用事件對象(瀏覽器

方式 veh element and false 使用 n) 如果 event對象 var EventUtil = { addHander: function(element, type, handler) { if (elemen

瀏覽器事件處理程序

跨瀏覽器 log fun class color lis 添加 自己的 ner 上次說到了JS中事件處理程序在DOM0級和DOM2級和IE中是不同的,每個都有自己的添加和移除事件處理程序的形式。 那要將這些差異進行統一化。避免這種差異。對於順序問題,我們應該要先將最經常使用

瀏覽器事件對象

pan 默認事件 n) ner listen 添加 urn clas util var EventUtil = { addHandler: function(element,type,handler){//添加事件

瀏覽器事件處理程式//IE、chrome

var eventUtil={ addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else i

原生事件繫結(瀏覽器),dom0和dom2的區別?

1. DOM0級事件處理程式(屬性繫結,相容性好)通過javascript制定事件處理程式的傳統方式,將一個函式賦值給一個事件處理程式屬性。特點是簡單,跨瀏覽器。        var btn = document.getElementById("btn");btn.oncl

IE和Chrome瀏覽器事件處理的解決辦法

一、事件流 事件流描述的是從頁面中接受事件的順序。 IE的事件流是事件冒泡流,而Netscape的事件流是事件捕獲流 1、事件冒泡 事件冒泡,即事件最開始由最具體的元素(文件中巢狀層次最深的那個節點)

事件源、事件物件、阻止事件冒泡、阻止瀏覽器預設行為、Dom2級事件相容寫法

1事件物件的獲取 var e =e|event; 2事件源的獲取 var target=e.target||e.srcElemet; 3阻止事件 冒泡 e.cancelBubble=true; ie e.stoppropagation() 4阻止瀏覽器

DOM事件瀏覽器

1.DOM2和DOM0級共同優點:可以給一個元素上新增多個事件處理程式,會按照順序執行。<br> DOM2級事件處理程式,ie不支援,ie有專用的事件處理程式。<br> DOM

Python多線程Selenium瀏覽器測試

items 支持 chrome 定義 -c name 機器 quit http 如何執行跨瀏覽器測試 如果我們使用selenium webdriver,那我們就能夠自動的在IE、firefox、chrome、等不同瀏覽器上運行測試用例。 為了能在同一臺機器上不同瀏覽器上同時

瀏覽器檢測某個節點是不是另一個節點的後代

amp get 使用 etc contains eof engine 通過 col 1.通常我們使用contains()方法不通過在DOM文檔樹中查找即可獲得這個消息,傳入兩個參數,一個是祖先節點另一個是需要檢測的後臺節點。2.通過compareDocumentPositi

【轉】一款開源免費瀏覽器的視頻播放器--videojs使用介紹

med padding 網站 最新代碼 html 但是 videojs let live 特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:http://www.cnb