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

js 事件處理函數(shù)間的Event物件是否全等

 更新時間:2011年04月08日 00:03:33   作者:  
在非IE,事件對象Propagation之間的處理函數(shù),或同dom節(jié)點觸發(fā)的多個函數(shù)之間的Event物件是全等的。與綁定形式[addEventListener/DOM0]無關(guān)。
這個小問題以前就遇到,卻沒有去總結(jié)
現(xiàn)在又遇到,為了得到準(zhǔn)確結(jié)論,記錄下來:
如題:同一事件 多個執(zhí)行函數(shù)間的Event物件是否全等

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

dom.addEvent('click',fna);
dom.addEvent('click',fnb);

1:在fna里對Event物件添加的屬性,在其后執(zhí)行的fnb函數(shù)里是對于Event物件是否能訪問到?
2:執(zhí)行fna/fnb函數(shù)時的Event物件是否全等 Eventfna===Eventfnb ?

標(biāo)準(zhǔn)的文檔太長哪里是說明了這里的規(guī)則呢?懶吧...

對于Jquery,同一事件,多個執(zhí)行函數(shù)間的Event物件是全等的。
Jquery live綁定事件的實現(xiàn)里,對于可能會被重復(fù)執(zhí)行的函數(shù)liveHandler,依靠額外給Event物件的liveFired屬性,使得在第一次之后執(zhí)行的liveHandler 的開始 即退出函數(shù):
復(fù)制代碼 代碼如下:

if (event.liveFired === this || ...) {
return;
}
///....
event.liveFired = this;

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

function a(e) {
e.abc = function() {
alert(a);
};
prevEvent = e;
prevIeEvent=window.event;
}
function b(e,event) {
e.abc(); //fn
alert(e === prevEvent); //true
if(event=window.event){
alert(event===e); //false
alert(event===prevIeEvent);//false
alert(event===prevEvent);//false
}
}
var t = document.getElementById("p");
if (t.addEventListener) {
t.addEventListener('click', a, false);
t.addEventListener('click', b, false)
} else {
t.attachEvent('onclick', b);
t.attachEvent('onclick', a)
}

對于原生綁定事件方式[addEventListener,attachEvent],對于多個執(zhí)行函數(shù)間的Event物件(通過參數(shù)傳遞的event)是全等的,在IE里,通過window.event形式得到的Event物件不全等。與通過參數(shù)傳遞的Event也不全等。
對于冒泡事件:
復(fù)制代碼 代碼如下:

dom.addEvent('click',fna);
domParentNode.addEvent('click',fnb);

jquery里,在以trigger形式觸發(fā)事件時,冒泡事件之間的函數(shù)中的Event物件是全等的。而實際用戶行為觸發(fā)的事件,則不是同一物件。自定義屬性也傳遞不了。取值設(shè)置都都沒有影響真正的originalEvent。
以原生綁定事件方式[addEventListener,attachEvent]:
復(fù)制代碼 代碼如下:

function a(e) {
e.abc = function() {
alert(a);
};
prevEvent = e;
prevIeEvent=window.event;
}
function b(e,event) {
alert(e.abc); //fn
alert(e === prevEvent); //true
if(event=window.event){
alert(event===e); //false
alert(event===prevIeEvent);//false
alert(event===prevEvent);//false
}
}
var t = document.getElementById("p");
if (t.addEventListener) {
t.addEventListener('click', a, false);
document.body.addEventListener('click', b, false);
} else {
t.attachEvent('onclick', a);
document.body.attachEvent('onclick', b);
}

結(jié)果是attachEvent綁定事件時IE中冒泡事件之間的函數(shù)內(nèi)Event物件不一致。FF等 以addEventListener 則全等對象。
事實上,在非IE,事件對象Propagation之間的處理函數(shù),或同dom節(jié)點觸發(fā)的多個函數(shù)之間的Event物件是全等的。與綁定形式[addEventListener/DOM0]無關(guān)。
而在IE,僅同dom節(jié)點觸發(fā)的多個函數(shù)之間的通過參數(shù)傳遞的Event物件(attachEvent)是全等的。

相關(guān)文章

  • JavaScript鼠標(biāo)移動事件以及實戰(zhàn)案例

    JavaScript鼠標(biāo)移動事件以及實戰(zhàn)案例

    在學(xué)習(xí)JS中我對鼠標(biāo)移動事件進(jìn)行了一些總結(jié),需要的可以作參考,下面這篇文章主要給大家介紹了關(guān)于JavaScript鼠標(biāo)移動事件以及實戰(zhàn)案例的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • js跳轉(zhuǎn)到指定url的方法與實際使用

    js跳轉(zhuǎn)到指定url的方法與實際使用

    這篇文章主要給大家介紹了關(guān)于js跳轉(zhuǎn)到指定url的方法與實際使用的相關(guān)資料,要實現(xiàn)JavaScript跳轉(zhuǎn)到指定URL,可以使用window.location對象來實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • 實例分析js事件循環(huán)機(jī)制

    實例分析js事件循環(huán)機(jī)制

    這篇文章主要介紹了js事件循環(huán)機(jī)制,并通過實例分析了用法和技巧,一起學(xué)習(xí)分享下。
    2017-12-12
  • JS實現(xiàn)獲取各種格式的時間

    JS實現(xiàn)獲取各種格式的時間

    在?JavaScript?中,可以使用內(nèi)置的?Date?對象來獲取當(dāng)前時間,并根據(jù)需要格式化成不同的時間格式,下面就跟隨小編一起來看看具體的使用吧
    2023-08-08
  • js獲取鍵盤按鍵響應(yīng)事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應(yīng)事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應(yīng)事件(兼容各瀏覽器),需要的朋友可以參考一下
    2013-05-05
  • 微信小程序?qū)崿F(xiàn)底部導(dǎo)航

    微信小程序?qū)崿F(xiàn)底部導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義底部導(dǎo)航,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 原生JS檢測CSS3動畫是否結(jié)束的方法詳解

    原生JS檢測CSS3動畫是否結(jié)束的方法詳解

    這篇文章主要介紹了原生JS檢測CSS3動畫是否結(jié)束的方法,結(jié)合實例形式分析了javascript事件響應(yīng)及針對css3屬性檢測相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • layui(1.0.9)文件上傳upload,前后端的實例代碼

    layui(1.0.9)文件上傳upload,前后端的實例代碼

    今天小編就為大家分享一篇layui(1.0.9)文件上傳upload,前后端的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序訂閱消息(java后端實現(xiàn))開發(fā)

    微信小程序訂閱消息(java后端實現(xiàn))開發(fā)

    這篇文章主要介紹了微信小程序訂閱消息(java后端實現(xiàn))開發(fā),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • JS 毫秒轉(zhuǎn)時間示例代碼

    JS 毫秒轉(zhuǎn)時間示例代碼

    毫秒轉(zhuǎn)時間的方法有很多,在本文將為大家介紹下js中是如何實現(xiàn)的,感興趣的朋友可以參考下
    2013-09-09

最新評論

四川省| 东宁县| 通州市| 冀州市| 阜南县| 黑河市| 新乡市| 博客| 盘锦市| 临夏市| 九江市| 右玉县| 石家庄市| 南皮县| 镇平县| 海盐县| 宁强县| 石楼县| 辽中县| 诸暨市| 兴国县| 渝中区| 东乡| 元阳县| 米脂县| 太白县| 南城县| 高安市| 大丰市| 鲁山县| 阿荣旗| 沙河市| 麟游县| 治县。| 揭西县| 绥中县| 昌平区| 本溪| 沧州市| 天全县| 广西|