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

FireFox JavaScript全局Event對(duì)象

 更新時(shí)間:2009年06月14日 00:02:48   作者:  
在IE下 JavaScript 中可以在任何地方使用全局的window.event來(lái)取得本次JavaScript被觸發(fā)的Event,從而取得 KeyCode,EventSourceElement 等對(duì)象。
而在FireFox中卻沒(méi)有這樣的對(duì)象,如果有函數(shù)嵌套調(diào)用,需要不停的向下傳遞Event,例如下面的場(chǎng)景。
復(fù)制代碼 代碼如下:

<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,就需要寫(xiě)成這樣。如果在某種場(chǎng)景下,比如添加新功能,需要修改原來(lái)的Test2方法,需要訪問(wèn)event對(duì)象,而原來(lái)Test2方法的簽名是Test2(),沒(méi)有參數(shù)event,這時(shí)需要修改Test2()為T(mén)est2(event) 十分的不美觀,雖然JavaScript這樣的修改,是方法的重載,但是也破壞了原來(lái)的方法簽名。
在FireFox中是否有window.event這樣的全局變量來(lái)獲取event?
不幸的是FireFox的對(duì)象模型中是沒(méi)有的,但是可以使用變通的方法取得。例如:
復(fù)制代碼 代碼如下:

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瀏覽器的做法是不好的,應(yīng)該使用UserAgent來(lái)判斷,JQuery等類(lèi)庫(kù)中有好的實(shí)現(xiàn)。
這樣上面的 Test2方法就可以不用修改方法簽名了:
復(fù)制代碼 代碼如下:

function Test2(){
var event = GetEvent(Test2);
alert(GetEventTarget(event).id);
}
function GetEventTarget(event){
if(document.all)
return event.srcElement;
return event.target;
}

為什么可以寫(xiě)出GetEvent方法,取得Event?
因?yàn)樵贔irefox的事件模型中最初的事件調(diào)用是將event顯示的傳遞給方法的,所以可以寫(xiě)出GetEvent方法,取得喚起JavaScript的event。
Click to Open in New Window

相關(guān)文章

  • 微信小程序module.exports模塊化操作實(shí)例淺析

    微信小程序module.exports模塊化操作實(shí)例淺析

    這篇文章主要介紹了微信小程序module.exports模塊化操作,結(jié)合實(shí)例形式簡(jiǎn)單分析了module.exports模塊化的定義與引用相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • apicloud拉起小程序并傳遞參數(shù)的方法示例

    apicloud拉起小程序并傳遞參數(shù)的方法示例

    這篇文章主要介紹了apicloud拉起小程序并傳遞參數(shù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Stop SQL Server

    Stop SQL Server

    Stop SQL Server...
    2007-06-06
  • 詳解webpack介紹&安裝&常用命令

    詳解webpack介紹&安裝&常用命令

    本篇文章主要介紹了詳解webpack介紹&安裝&常用命令,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 移動(dòng)端手指操控左右滑動(dòng)的菜單

    移動(dòng)端手指操控左右滑動(dòng)的菜單

    這篇文章主要為大家詳細(xì)介紹了移動(dòng)端手指操控左右滑動(dòng)的菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • JS小數(shù)轉(zhuǎn)換為整數(shù)的方法分析

    JS小數(shù)轉(zhuǎn)換為整數(shù)的方法分析

    這篇文章主要介紹了JS小數(shù)轉(zhuǎn)換為整數(shù)的方法,結(jié)合實(shí)例形式分析了數(shù)值轉(zhuǎn)換的常用方法與使用技巧,需要的朋友可以參考下
    2017-01-01
  • 簡(jiǎn)單的JS輪播圖代碼

    簡(jiǎn)單的JS輪播圖代碼

    這篇文章主要介紹了簡(jiǎn)單的JS輪播圖實(shí)現(xiàn)方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 詳解全棧開(kāi)發(fā)Vercel數(shù)據(jù)庫(kù)存儲(chǔ)服務(wù)

    詳解全棧開(kāi)發(fā)Vercel數(shù)據(jù)庫(kù)存儲(chǔ)服務(wù)

    這篇文章主要為大家介紹了全棧開(kāi)發(fā)Vercel數(shù)據(jù)庫(kù)存儲(chǔ)服務(wù)功能使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • JS設(shè)置時(shí)間無(wú)效問(wèn)題的解決辦法

    JS設(shè)置時(shí)間無(wú)效問(wèn)題的解決辦法

    在發(fā)送短信息驗(yàn)證碼的時(shí)候要用到j(luò)s設(shè)置時(shí)間倒序問(wèn)題,有時(shí)候會(huì)導(dǎo)致js失效問(wèn)題,怎么辦呢?今天小編給大家分享JS設(shè)置時(shí)間無(wú)效問(wèn)題的解決辦法,需要的朋友參考下吧
    2017-02-02
  • JS禁用瀏覽器退格鍵實(shí)現(xiàn)思路及代碼

    JS禁用瀏覽器退格鍵實(shí)現(xiàn)思路及代碼

    關(guān)于瀏覽器退格鍵的禁用,可行的方法有很多,在本文將為大家詳細(xì)介紹下在js中時(shí)如何做到的,有需求的各位可以參考下
    2013-10-10

最新評(píng)論

麻阳| 逊克县| 绥中县| 连城县| 名山县| 隆安县| 无为县| 乐安县| 徐汇区| 温宿县| 洛宁县| 军事| 东兰县| 高要市| 胶州市| 阿巴嘎旗| 罗城| 蓬莱市| 葵青区| 四平市| 富顺县| 长海县| 竹山县| 波密县| 四子王旗| 恩施市| 临沧市| 平原县| 涪陵区| 喀什市| 太原市| 阜宁县| 确山县| 东源县| 娄烦县| 临江市| 江阴市| 商城县| 莒南县| 云梦县| 武冈市|