中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

FireFox JavaScript全局Event對象

而在FireFox中卻沒有這樣的對象,如果有函數嵌套調用,需要不停的向下傳遞Event,例如下面的場景。
復制代碼 代碼如下:
<div style="background-color:Red; width:300px; height:300px;" onclick="Test(event,this);" id="panel"></div>
function Test(event,dom){
Test1(event);
}
function Test1(event){
Test2(event);
}
function Test2(event){
alert(event.target.id);
}

在Test2方法中需要使用event,就需要寫成這樣。如果在某種場景下,比如添加新功能,需要修改原來的Test2方法,需要訪問event對象,而原來Test2方法的簽名是Test2(),沒有參數event,這時需要修改Test2()為Test2(event) 十分的不美觀,雖然JavaScript這樣的修改,是方法的重載,但是也破壞了原來的方法簽名。
在FireFox中是否有window.event這樣的全局變量來獲取event?
不幸的是FireFox的對象模型中是沒有的,但是可以使用變通的方法取得。例如:
復制代碼 代碼如下:
function GetEvent(caller){
if(document.all)
return window.event; //For IE.
if(caller == null || typeof(caller) != "function")
return null;
while(caller.caller != null){
caller = caller.caller;
}
return caller.arguments[0];
}

這里使用document.all判斷是否是IE瀏覽器的做法是不好的,應該使用UserAgent來判斷,JQuery等類庫中有好的實現。
這樣上面的 Test2方法就可以不用修改方法簽名了:
復制代碼 代碼如下:
function Test2(){
var event = GetEvent(Test2);
alert(GetEventTarget(event).id);
}
function GetEventTarget(event){
if(document.all)
return event.srcElement;
return event.target;
}

為什么可以寫出GetEvent方法,取得Event?
因為在Firefox的事件模型中最初的事件調用是將event顯示的傳遞給方法的,所以可以寫出GetEvent方法,取得喚起JavaScript的event。
Click to Open in New Window

JavaScript技術FireFox JavaScript全局Event對象,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲高清免费观看 | 亚洲综合视频 | 国产精品成人一区二区三区夜夜夜 | a级毛片毛片免费观看久潮喷 | 成人久久久久 | 免费观看黄| 精品福利在线 | 日韩一区二区成人 | 国产97视频在线观看 | 午夜成人免费视频 | 国产精品亚洲精品日韩已方 | 欧美成人精品一区二区男人看 | 夜夜夜久久久 | 日韩精品一区二区三区在线 | 欧美一级黑人aaaaaaa做受 | 97久久精品午夜一区二区 | 成人免费黄色 | 青青草网站在线观看 | 国产网站在线免费观看 | 国产日韩欧美在线观看 | 欧洲亚洲一区 | 日本久久久一区二区三区 | 日韩精品一区二区三区在线观看 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 久久久久欧美 | 午夜精品一区 | 日本在线精品视频 | 成人日韩精品 | 色综合久久天天综合网 | 欧美在线观看黄色 | 91精品国产乱码久久久久久 | 日韩高清在线 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 国产一区二区不卡 | 国产精品永久免费视频 | 欧美久久一级 | 超碰97在线免费 | 91精品国产91久久久 | 亚洲精品一区中文字幕乱码 | 日本欧美在线观看视频 | 国产一级一级国产 |