最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript Event事件中IE與標(biāo)準(zhǔn)DOM的比較

 更新時(shí)間:2010年04月23日 17:36:57   作者:  
說是IE與DOM的比較,其實(shí)還是瀏覽器之間的比較,眾多的瀏覽器中,IE獨(dú)樹一幟,并且占有大部分用戶市場(chǎng),后來的標(biāo)準(zhǔn)DOM雖然不少優(yōu)點(diǎn)之處,但畢竟一般用戶不關(guān)心也不知道這些,代碼編寫過程中,往往需要兼顧多個(gè)瀏覽器。
1.事件流的區(qū)別

IE采用冒泡型事件 Netscape使用捕獲型事件 DOM使用先捕獲后冒泡型事件
示例:
復(fù)制代碼 代碼如下:

<body>
<div>
<button>點(diǎn)擊這里</button>
</div>
</body>


冒泡型事件模型: button->div->body (IE事件流)

捕獲型事件模型: body->div->button (Netscape事件流)

DOM事件模型: body->div->button->button->div->body (先捕獲后冒泡)

2.事件偵聽函數(shù)的區(qū)別

IE使用:
[Object].attachEvent("name_of_event_handler", fnHandler); //綁定函數(shù)
[Object].detachEvent("name_of_event_handler", fnHandler); //移除綁定

DOM使用:
[Object].addEventListener("name_of_event", fnHandler, bCapture); //綁定函數(shù)
[Object].removeEventListener("name_of_event", fnHandler, bCapture); //移除綁定

bCapture參數(shù)用于設(shè)置事件綁定的階段,true為捕獲階段,false為冒泡階段。

示例代碼:
復(fù)制代碼 代碼如下:

function addEventHandler(object,eventType,fnHandler){
if(object.addEventListener){ //DOM
object.addEventListener(eventType, fnHandler, false);
}else if(object.attachEvent){ //IE
object.attachEvent("on"+eventType, fnHandler);
}else{ //others
object["on"+eventType]=fnHandler;
}
}
function removeEventHandler(object,eventType,fnHandler){
if(object.removeEventListener){ //DOM
object.removeEventListener(eventType, fnHandler, false);
}else if(object.detachEvent){ //IE
object.detachEvent("on"+eventType, fnHandler);
}else{ //others
object["on"+eventType]=null;
}
}
addEventHandler(oDiv,"click",function(){alert("clicked")});


3.事件對(duì)象定位(獲取)

IE:事件對(duì)象是window對(duì)象的一個(gè)屬性event,event只能在事件發(fā)生時(shí)訪問,事件處理函數(shù)執(zhí)行完畢,事件對(duì)象被銷毀。

示例:
復(fù)制代碼 代碼如下:

document.onclick=function(){
alert(window.event.type);
}

DOM:event對(duì)象必須作為唯一的參數(shù)傳遞給事件處理函數(shù),且必須為第一個(gè)參數(shù)。

示例:
復(fù)制代碼 代碼如下:

document.onclick=function(){
alert(arguments[0].type);
}


4.獲取目標(biāo)(target)
IE:var oTarget=oEvent.srcElement;
DOM:var oTarget=oEvent.target;

5.阻止事件默認(rèn)行為

IE:oEvent.returnValue=false;
DOM:oEvent.preventDefault();

示例:
復(fù)制代碼 代碼如下:

//屏蔽網(wǎng)頁右鍵菜單
document.body.oncontextmenu=function(oEvent){
if(document.all){
oEvent=window.event;
oEvent.returnValue=false;
}else{
oEvent.preventDefault();
}
}


6.停止事件復(fù)制(冒泡)
IE:oEvent.cancelBubble=true;
DOM:oEvent.stopPropagation();

示例:

復(fù)制代碼 代碼如下:

button.onclick=function(oEvent){
if(document.all){
oEvent=window.event;
oEvent.cancelBubble=true;
}else{
oEvent.stopPropagation();
}
}

附一個(gè)代碼測(cè)試窗口:(感覺有些時(shí)候這種方式比alert()還好用)

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

相關(guān)文章

最新評(píng)論

手游| 滕州市| 永泰县| 鹤山市| 若尔盖县| 黑河市| 金门县| 衡阳市| 佛学| 嵩明县| 观塘区| 康保县| 南和县| 梧州市| 黔江区| 上蔡县| 阿城市| 高碑店市| 渑池县| 尚义县| 丰宁| 盐边县| 阜宁县| 宾阳县| 体育| 揭西县| 阜康市| 海宁市| 镇巴县| 新巴尔虎右旗| 青海省| 手游| 庆阳市| 高阳县| 武汉市| 平果县| 思南县| 永胜县| 华池县| 乌兰察布市| 威宁|