天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

firefox 和 ie 事件處理的細(xì)節(jié),研究,再研究 書(shū)寫(xiě)同時(shí)兼容ie和ff的事件處理代碼

在ie中,事件對(duì)象是作為一個(gè)全局變量來(lái)保存和維護(hù)的。 所有的瀏覽器事件,不管是用戶(hù)觸發(fā)的,還是其他事件, 都會(huì)更新window.event 對(duì)象。 所以在代碼中,只要輕松調(diào)用 window.event 就可以輕松獲取 事件對(duì)象, 再 event.srcElement 就可以取得觸發(fā)事件的元素進(jìn)行進(jìn)一步處理在ff中, 事件對(duì)象卻不是全局對(duì)象,一般情況下,是現(xiàn)場(chǎng)發(fā)生,現(xiàn)場(chǎng)使用,ff把事件對(duì)象自動(dòng)傳遞給對(duì)應(yīng)的事件處理函數(shù)。 在代碼中,函數(shù)的第一個(gè)參數(shù)就是ff下的事件對(duì)象了。
以上是我個(gè)人對(duì)兩個(gè)瀏覽器下的事件處理方法的粗淺理解,可能說(shuō)得不是很明白,我寫(xiě)些代碼來(lái)
詳細(xì)說(shuō)明一下
復(fù)制代碼 代碼如下:
<button id="btn1">按鈕1</button>
<button id="btn2">按鈕2</button>
<button id="btn3">按鈕3</button>
<script>
window.onload=function(){
document.getElementById("btn1").onclick=foo1
document.getElementById("btn2").onclick=foo2
document.getElementById("btn3").onclick=foo3
}
function foo1(){
//ie中, window.event使全局對(duì)象
alert(window.event) // ie下,顯示 "[object]" , ff下顯示 "undefined"
//ff中, 第一個(gè)參數(shù)自動(dòng)從為 事件對(duì)象
alert(arguments[0]) // ie下,顯示 "undefined", ff下顯示 "[object]"
}
function foo2(e){
alert(window.event) // ie下,顯示 "[object]" , ff下顯示 "undefined"
//注意,我從來(lái)沒(méi)有給 foo2傳過(guò)參數(shù)哦。 現(xiàn)在 ff自動(dòng)傳參數(shù)給 foo2, 傳的參數(shù)e 就是事件對(duì)象了
alert(e) // ie下,顯示 "undefined", ff下顯示 "[object]"
}
function foo3(){ //同時(shí)兼容ie和ff的寫(xiě)法,取事件對(duì)象
alert(arguments[0] || window.event) // ie 和 ff下,都顯示 "[object]"
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target //在 ie和ff下 取得 btn3對(duì)象
alert(element.id) // btn3
}
</script>

看到這里,我們似乎對(duì) ie和ff的事件處理方式都已經(jīng)理解了,并找到了解決的辦法。
但是。。。。事情還沒(méi)有結(jié)束。
看代碼
復(fù)制代碼 代碼如下:
<button id="btn" onclick="foo()">按鈕1</button>
<script>
function foo(){
alert(arguments[0] || window.event)
}
</script>

很不幸,我們 foo給我們的結(jié)果是 undefined, 而不是期望的 object
原因在于 事件綁定的方式
onclick="foo()" 就是直接執(zhí)行了, foo() 函數(shù),沒(méi)有任何參數(shù)的,
這種情況下 firefox沒(méi)有機(jī)會(huì)傳遞任何參數(shù)給foo
而 btn.onclick=foo 這種情況, 因?yàn)椴皇侵苯訄?zhí)行函數(shù),firefox才有機(jī)會(huì)傳參數(shù)給foo
解決方法:
方法一:比較笨的方法,既然 firefox沒(méi)有機(jī)會(huì)傳參數(shù),那么自己勤快點(diǎn),自己傳
復(fù)制代碼 代碼如下:
<button id="btn" onclick="foo(event)">按鈕</button>
<script>
function foo(){
alert(arguments[0] || window.event)
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target
alert(element.id)
}
</script>

方法二: 自動(dòng)查找
復(fù)制代碼 代碼如下:
<button id="btn4" onclick="foo4()">按鈕4</button>
<script>
function foo4(){
var evt=getEvent()
var element=evt.srcElement || evt.target
alert(element.id)
}
function getEvent(){ //同時(shí)兼容ie和ff的寫(xiě)法
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent)
|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
</script>

方法二由 lostiNET原創(chuàng),我在其基礎(chǔ)上有所改進(jìn), 原函數(shù)如下
復(fù)制代碼 代碼如下:
function SearchEvent()
{
//IE
if(document.all)
return window.event;
func=SearchEvent.caller;
while(func!=null)
{
var arg0=func.arguments[0];
if(arg0)
{
if(arg0.constructor==Event)
return arg0;
}
func=func.caller;
}
return null;
}

簡(jiǎn)單總結(jié):
以上兩個(gè)解決方法中,都正確處理 ff和ie下 的事件處理 (不管是onclick="foo()",方式還是 onclick=foo方式)
但是個(gè)人建議用 getEvent() 方法來(lái)統(tǒng)一處理 事件問(wèn)題。
先寫(xiě)到這里,大家繼續(xù)。。

JavaScript技術(shù)firefox 和 ie 事件處理的細(xì)節(jié),研究,再研究 書(shū)寫(xiě)同時(shí)兼容ie和ff的事件處理代碼,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 野草视频在线观看 | 边摸边吃奶边做下面视频 | 55夜色66夜亚洲精品播放 | 国产免费久久爱久久啪 | 一起碰一起噜一起草视频 | 午夜神器老司机高清无码 | 羞羞答答的免费视频在线观看 | 99国产精品久久久久久久日本竹 | 午夜理伦大片一级 | 伊人影院香蕉久在线26 | 国产亚洲精品字幕在线观看 | 亚洲爱视频| 国产 精品 亚洲 欧美 高清 | 色综合久久中文色婷婷 | 又色又爽又黄gif动态视频 | 无码AV精品久久一区二区免费 | 亚洲AV日韩AV欧美在线观看网 | 男女爽爽无遮挡午夜视频在线观看 | 老女老肥熟国产在线视频 | 亚洲国产成人一区二区在线 | 久久综合老色鬼网站 | 国产h视频在线观看免费 | 99视频精品全部免费 在线 | 亲嘴扒胸摸屁股视频免费网站 | 美女直播喷水 | 国产曰韩无码亚洲视频 | 国产在线一区二区AV视频 | 高清 仑乱 一级 a | 手机国产视频福利 | 处初女处夜情视频在线播放 | 国语自产视频在线不卡 | 国产午夜精品不卡视频 | 边摸边吃奶边做带声音 | 国产精品香蕉视频在线 | 精品一品国产午夜福利视频 | 精品国产精品人妻久久无码五月天 | 亚洲精品视频免费看 | 男女车车的车车网站W98免费 | 国产精品久久高潮呻吟无码 | 麻豆第一区MV免费观看网站 | 伊人色综合久久天天 |