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

JavaScript 獲取事件對象的注意點

 更新時間:2009年07月29日 16:30:49   作者:  
平時我們獲取事件對象一定要將firefox考慮進去。

平時我們獲取事件對象一般寫法如下:

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

function getEvent(event) {
return event || window.event // IE:window.event
}

如果沒有參數(shù),也可寫成(非IE :事件對象會自動傳遞給對應(yīng)的事件處理函數(shù),且為第一個參數(shù)):
復(fù)制代碼 代碼如下:

function getEvent() {
return arguments[0] || window.event // IE:window.event
}

這樣的寫法在除 Firefox(測試版本:3.0.12,下同) 外的瀏覽器上運行都不會有問題,但 Firefox 為什么例外呢?讓我們這樣一種情形:
復(fù)制代碼 代碼如下:

<button id="btn" onclick="foo()">按鈕</button>
<script>
function foo(){
var e = getEvent();
alert(e);}
</script>

運行結(jié)果在 Firefox 中是 undefined,為什么呢?
在 Firefox 中調(diào)用其實是這樣的,先調(diào)用執(zhí)行的是:
復(fù)制代碼 代碼如下:

function onclick(event) {
foo();
}

然后調(diào)用執(zhí)行的是:
復(fù)制代碼 代碼如下:

function foo(){
var e = getEvent();
alert(e);
}

會發(fā)現(xiàn)在 Firefox 下 onclick="foo()" 中的 foo() 無法自動傳入事件對象參數(shù),而默認傳遞給了系統(tǒng)生成的 onclick 函數(shù),那本例我們可以通過getEvent.caller.caller.arguments[0] 獲得事件對象。
因此,我們的 getEvent 可以優(yōu)化成(參照 yui_2.7.0b 中的 event/event-debug.js 中 getEvent 方法):
復(fù)制代碼 代碼如下:

function getEvent(event) {
var ev = event || window.event;
if (!ev) {
var c = this.getEvent.caller;
while (c) {
ev = c.arguments[0];
if (ev && (Event == ev.constructor || MouseEvent == ev.constructor)) { /懌飛注:YUI 源碼 BUG,ev.constructor 也可能是 MouseEvent,不一定是 Event
break;
}
c = c.caller;
}
}
return ev;
}

當然還有一個很簡單的解決方法,就是手動將參數(shù)傳遞給 onclick="foo()":
復(fù)制代碼 代碼如下:

<button id="btn" onclick="foo(event)">按鈕</button>

相關(guān)文章

  • web 頁面分頁打印的實現(xiàn)

    web 頁面分頁打印的實現(xiàn)

    網(wǎng)上找的,經(jīng)我整理添加demo如下
    2009-06-06
  • JavaScript 三種不同位置代碼的寫法

    JavaScript 三種不同位置代碼的寫法

    客戶端腳本JavaScript在寫法上其實有很多種方法,它們的放置位置也非常之多。
    2009-10-10
  • webpack中使用iconfont字體圖標的方法

    webpack中使用iconfont字體圖標的方法

    下面小編就為大家分享一篇webpack中使用iconfont字體圖標的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • threejs太陽光與陰影效果實例代碼

    threejs太陽光與陰影效果實例代碼

    在Threejs中類似于我們現(xiàn)實世界,物體顯示的顏色是由物體本身的顏色及光照的顏色相互疊加而得到的,這篇文章主要給大家介紹了關(guān)于threejs太陽光與陰影效果的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • JS加載解析Markdown文檔過程詳解

    JS加載解析Markdown文檔過程詳解

    這篇文章主要介紹了JS加載解析Markdown文檔過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • js最實用string(字符串)類型的使用及截取與拼接詳解

    js最實用string(字符串)類型的使用及截取與拼接詳解

    這篇文章主要介紹了js string使用截取與拼接,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript 組件之旅(一)分析和設(shè)計

    JavaScript 組件之旅(一)分析和設(shè)計

    毫無疑問,JavaScript 是一種非常靈活的腳本語言,有時候它像一只難以馴服的野馬——你受益于它的靈活性的同時,也要時刻提防它變得失去控制
    2009-10-10
  • js實現(xiàn)超級瑪麗小游戲

    js實現(xiàn)超級瑪麗小游戲

    這篇文章主要為大家詳細介紹了js實現(xiàn)超級瑪麗小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JS通用方法觸發(fā)點擊事件代碼實例

    JS通用方法觸發(fā)點擊事件代碼實例

    這篇文章主要介紹了JS通用方法觸發(fā)點擊事件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • JavaScript中的null和undefined解析

    JavaScript中的null和undefined解析

    在JavaScript開發(fā)中,被人問到:null與undefined到底有啥區(qū)別? 一時間不好回答,特別是undefined,因為這涉及到undefined的實現(xiàn)原理
    2012-04-04

最新評論

凯里市| 怀化市| 城市| 古田县| 丹棱县| 锡林郭勒盟| 车险| 沾化县| 江西省| 五峰| 双牌县| 沭阳县| 荥阳市| 富锦市| 湖北省| 南充市| 清涧县| 郁南县| 安多县| 孝感市| 靖边县| 社会| 满洲里市| 蚌埠市| 陕西省| 丹凤县| 宝山区| 青海省| 井冈山市| 达尔| 徐闻县| 彝良县| 毕节市| 辉南县| 西平县| 多伦县| 合肥市| 资源县| 西安市| 平利县| 个旧市|