欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(十七) js事件

 更新時(shí)間:2012年08月14日 16:37:43   作者:  
IE中是冒泡型事件,即從最特定的事件目標(biāo)到最不特定的事件目標(biāo)
一、事件流

  IE中是冒泡型事件,即從最特定的事件目標(biāo)到最不特定的事件目標(biāo)。
  Netscape Navigator使用的是捕獲型事件,這個(gè)跟IE中采用的冒泡型事件相反。
  DOM事件流同時(shí)支持兩種事件模型,但捕獲型事件先發(fā)生。

二、事件處理函數(shù)/監(jiān)聽(tīng)函數(shù)

  事件是用戶或?yàn)g覽器自身進(jìn)行的特定行為。這些事件都有自己的名字,如click、load、mouseover等。
  事件處理函數(shù)有兩種分配方式:在JavaScript中或者在HTML中。
  如果在JavaScript中分配事件處理函數(shù),則首先要獲得要處理的對(duì)象的引用,然后將函數(shù)賦值給對(duì)應(yīng)的事件處理函數(shù)屬性,像這樣(事件處理函數(shù)名稱必須小寫(xiě)):
復(fù)制代碼 代碼如下:

var oDiv=document.getElementById("div1");
oDiv.onclick=function(){
alert("I was clicked");
}

  如果在HTML中分配事件處理函數(shù),則只要在HTML標(biāo)簽中添加事件處理函數(shù)的特征,并在其中包含合適的腳本作為特性值就可以了,如下:
復(fù)制代碼 代碼如下:

<div onclick="alert('I was clicked')"></div>  

為了給每個(gè)可用事件分配多個(gè)事件處理函數(shù),IE和DOM各提供了自己的方法。
  IE中每個(gè)元素和window對(duì)象都有兩個(gè)方法:attachEvent()和detachEvent(),顧名思義,前者用來(lái)給一個(gè)事件附加事件處理函數(shù),后者用來(lái)將事件處理函數(shù)分離出來(lái)。每個(gè)方法都有兩個(gè)參數(shù):要分配的事件處理函數(shù)名字及一個(gè)函數(shù)。如:
復(fù)制代碼 代碼如下:

var fnClick=function(){
alert("Clicked");
}
var fnClick2=function(){
alert("Click2");
}
var oDiv=document.getElementById("div");
oDiv.attachEvent("onclick",fnClick);
oDiv.attachEvent("onclick",fnClick2)
oDiv.detachEvent("onclick",fnClick);
oDiv.detachEvent("onclick",fnClick2);

DOM中采用了addEventListener()和removeEventListener()來(lái)分配和移除事件處理函數(shù)。與IE不同的是這些方法有三個(gè)參數(shù),第三個(gè)參數(shù)標(biāo)識(shí)是用于冒泡階段還是捕獲階段。用于捕獲階段為true,用于冒泡階段則為false。移除時(shí)第三個(gè)參數(shù)要跟添加時(shí)保持一致。如:
復(fù)制代碼 代碼如下:

var fnClick=function(){
alert("Clicked");
}
var fnClick2=function(){
alert("Click2");
}
var oDiv=document.getElementById("div");
oDiv.addEventListener("onclick",fnClick,false);
oDiv.addEventListener("onclick",fnClick2,false)
oDiv.removeEventListener("onclick",fnClick,false);
oDiv.removeEventListener("onclick",fnClick2,false);


三、事件對(duì)象

  事件對(duì)象一般包含的信息是:引起事件的對(duì)象,事件發(fā)生時(shí)鼠標(biāo)的信息,事件發(fā)生時(shí)鍵盤(pán)的信息。
定位
  IE中事件對(duì)象是window對(duì)象的一個(gè)屬性event。事件處理函數(shù)必須這樣訪問(wèn)事件對(duì)象:
復(fù)制代碼 代碼如下:

oDiv.onclick = function(){
var oEvent=window.event;
}

DOM標(biāo)準(zhǔn)則說(shuō),event對(duì)象必須作為唯一的參數(shù)傳遞給事件處理函數(shù)。所以,在DOM兼容的瀏覽器(如Mozilla、Safair、Opera)中訪問(wèn)事件對(duì)象為:
復(fù)制代碼 代碼如下:

oDiv.onclick=function(){
var oEvent=arguments[0];
}
//or
oDiv.onclick=function(oEvent){
}

屬性方法相似性

  1、獲取事件類型:oEvent.type
  2、獲取按鍵代碼:oEvent.keyCode
  3、檢測(cè)Shift、Alt、Ctrl鍵:oEvent.shiftKey;oEvent.altKey;oEvent.ctrlKey;
  4、獲取客戶端鼠標(biāo)坐標(biāo):oEvent.clientX;oEvent.clientY;
  5、獲取屏幕坐標(biāo):oEvent.screenX;oEvent.screenY;

屬性方法區(qū)別

  1、獲取目標(biāo):IE用srcElement,DOM用target;
  2、獲取按鍵字符代碼:IE用keyCode,DOM用charCode和String.fromCharCode;
  3、阻止某個(gè)事件的默認(rèn)行為:IE用oEvent.returnValue=false,DOM用preventDefault()方法;
  4、停止事件冒泡:IE中用oEvent.cancelBubble=true;DOM中用oEvent.stopPropagation();

四、事件的類型

  1、鼠標(biāo)事件
  鼠標(biāo)事件包含click、dblclick、mousedown、mouseout、mouseover、mouseup、mousemove。
  事件順序:dblclick事件會(huì)先后觸發(fā)以下事件:mousedown、mouseup、click、mousedown、mouseup、click、dblclick。
  2、鍵盤(pán)事件
  鍵盤(pán)事件包括:keydown、keypress、keyup。
  事件順序:用戶按一次某字符按鍵時(shí),會(huì)先后觸發(fā)以下事件:keydown、keypress、keyup。如果按一次某非字符按鍵時(shí),會(huì)先后觸發(fā)以下事件:keydown、keyup。
  3、HTML事件
  HTML事件包括:load、unload、abort、error、select、change、submit、reset、resize、scroll、focus、blur。
  4、變化事件
  雖然變化事件已經(jīng)是DOM標(biāo)準(zhǔn)的一部分,但是目前還沒(méi)有任何主流的瀏覽器實(shí)現(xiàn)了它。因此這里只是列舉出來(lái)。
  變化事件包括:DOMSubtreeModified、DOMNodeInserted、DOMNodeRemoved、DOMNodeRemovedFromDocument、DOMNodeInsteredIntoDocument。

作者:Artwl
出處:http://artwl.cnblogs.com

相關(guān)文章

  • document.styleSheets[0].rules 與 cssRules區(qū)別

    document.styleSheets[0].rules 與 cssRules區(qū)別

    document.styleSheets[0].rules 與 cssRules區(qū)別...
    2007-08-08
  • JS二進(jìn)制流文件下載導(dǎo)出(接口返回二進(jìn)制流)亂碼處理方法

    JS二進(jìn)制流文件下載導(dǎo)出(接口返回二進(jìn)制流)亂碼處理方法

    這篇文章主要介紹了JS二進(jìn)制流文件下載導(dǎo)出(接口返回二進(jìn)制流)亂碼處理方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • echarts折線圖流動(dòng)特效的實(shí)現(xiàn)全過(guò)程(非平滑曲線)

    echarts折線圖流動(dòng)特效的實(shí)現(xiàn)全過(guò)程(非平滑曲線)

    最近因?yàn)楣緲I(yè)務(wù)需求,需要實(shí)現(xiàn),當(dāng)Echarts重新加載數(shù)據(jù)時(shí)實(shí)現(xiàn)動(dòng)態(tài)效果,下面這篇文章主要給大家介紹了關(guān)于echarts折線圖流動(dòng)特效實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)

    JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)

    這篇文章主要是對(duì)JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 得到form下的所有的input的js代碼

    得到form下的所有的input的js代碼

    得到form下的所有的input的方法有很多,在本文為大家介紹下使用form 的集合對(duì)象elements,從而得到value,需要的朋友可以參考下
    2013-11-11
  • 詳解webpack性能優(yōu)化——DLL

    詳解webpack性能優(yōu)化——DLL

    本篇文章主要介紹了詳解webpack性能優(yōu)化——DLL,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • BootStrap的雙日歷時(shí)間控件使用

    BootStrap的雙日歷時(shí)間控件使用

    這段時(shí)間看了下bootstrap的時(shí)間控件,發(fā)現(xiàn)使用起來(lái)還是很簡(jiǎn)單的,趁著有時(shí)間的時(shí)候整理了一下,特此分享到腳本之家平臺(tái),感興趣的朋友參考下
    2017-07-07
  • 原生JS實(shí)現(xiàn)跑馬燈效果

    原生JS實(shí)現(xiàn)跑馬燈效果

    本文主要分享了原生JS實(shí)現(xiàn)跑馬燈效果的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 判斷iframe里的頁(yè)面是否加載完成

    判斷iframe里的頁(yè)面是否加載完成

    這篇文章主要介紹了通過(guò)js來(lái)判斷iframe里的頁(yè)面是否加載完成,需要的朋友可以參考下
    2014-06-06
  • JavaScript無(wú)阻塞加載和defer、async詳解

    JavaScript無(wú)阻塞加載和defer、async詳解

    JS具有阻塞特性,當(dāng)瀏覽器在執(zhí)行js代碼時(shí),不能同時(shí)做其它事情,所有瀏覽器在下載JS的時(shí)候,會(huì)阻止一切其他活動(dòng),比如其他資源的下載,內(nèi)容的呈現(xiàn)等等。至到JS下載、解析、執(zhí)行完畢后才開(kāi)始繼續(xù)并行下載其他資源并呈現(xiàn)內(nèi)容。
    2017-02-02

最新評(píng)論