国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

firefox 和 ie 事件處理的細節,研究,再研究 書寫同時兼容ie和ff的事

2024-09-06 12:42:38
字體:
來源:轉載
供稿:網友

在ie中,事件對象是作為一個全局變量來保存和維護的。 所有的瀏覽器事件,不管是用戶觸發的,還是其他事件, 都會更新window.event 對象。 所以在代碼中,只要輕松調用 window.event 就可以輕松獲取 事件對象, 再 event.srcElement 就可以取得觸發事件的元素進行進一步處理在ff中, 事件對象卻不是全局對象,一般情況下,是現場發生,現場使用,ff把事件對象自動傳遞給對應的事件處理函數。 在代碼中,函數的第一個參數就是ff下的事件對象了。
以上是我個人對兩個瀏覽器下的事件處理方法的粗淺理解,可能說得不是很明白,我寫些代碼來
詳細說明一下
代碼如下:
<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使全局對象
alert(window.event) // ie下,顯示 "[object]" , ff下顯示 "undefined"
//ff中, 第一個參數自動從為 事件對象
alert(arguments[0]) // ie下,顯示 "undefined", ff下顯示 "[object]"
}
function foo2(e){
alert(window.event) // ie下,顯示 "[object]" , ff下顯示 "undefined"
//注意,我從來沒有給 foo2傳過參數哦。 現在 ff自動傳參數給 foo2, 傳的參數e 就是事件對象了
alert(e) // ie下,顯示 "undefined", ff下顯示 "[object]"
}
function foo3(){ //同時兼容ie和ff的寫法,取事件對象
alert(arguments[0] || window.event) // ie 和 ff下,都顯示 "[object]"
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target //在 ie和ff下 取得 btn3對象
alert(element.id) // btn3
}
</script>

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

很不幸,我們 foo給我們的結果是 undefined, 而不是期望的 object
原因在于 事件綁定的方式
onclick="foo()" 就是直接執行了, foo() 函數,沒有任何參數的,
這種情況下 firefox沒有機會傳遞任何參數給foo
而 btn.onclick=foo 這種情況, 因為不是直接執行函數,firefox才有機會傳參數給foo
解決方法:
方法一:比較笨的方法,既然 firefox沒有機會傳參數,那么自己勤快點,自己傳
代碼如下:
<button id="btn" onclick="foo(event)">按鈕</button>
<script>
function foo(){
alert(arguments[0] || window.event)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山阳县| 郯城县| 麟游县| 洛隆县| 怀来县| 彭水| 吕梁市| 霞浦县| 黄陵县| 泾川县| 新巴尔虎左旗| 台北县| 尤溪县| 孟州市| 微山县| 密山市| 阿拉善右旗| 龙井市| 明溪县| 湄潭县| 白玉县| 波密县| 云龙县| 金华市| 区。| 师宗县| 丹东市| 顺昌县| 大港区| 浮山县| 阿克| 邳州市| 封开县| 松潘县| 安化县| 信丰县| 平潭县| 定结县| 荥经县| 乌海市| 无锡市|