摘要:方式方式方式指向節點對象輸出事件對象輸出事件對象輸出事件對象指向節點對象輸出事件對象輸出事件對象輸出事件對象指向全局對象輸出事件對象如果是方式定義的時候也可以沒有形參但是被調用的時候一定會傳遞一個事件對象如果有形參則用接收如果沒有可以在函數
hello1//方式1hello2//方式2hello3//方式3
如果是方式1,2,function定義的時候也可以沒有evt形參,但是被調用的時候一定會傳遞一個事件對象,如果有形參evt,則用evt接收,如果沒有,可以在函數內直接通過event或arguments[0]訪問.
如果是方式3,當是test()調用時,則不會傳遞事件對象,evt和arguments[0]均輸出undefined.如果是test(evt)調用,則傳遞事件對象,evt和arguments[0]均輸出事件對象
以下內容都是基于http://harttle.com/2015/08/14...的總結
事件處理函數中,我們通常使用this來獲取當前被操作的對象,但對于不同的事件綁定方式,this可能不一定指代的是當前被操作的對象.常見的事件綁定方式基本上是以下這些:
1.attachEvent: IE9以下(不包括IE9).
2.addEventListener: 支持DOM Level2 Event的瀏覽器中.
3.el.onclick = function() {}
4.
attachEvent與addEventListener的區別
1.支持的瀏覽器不同,attachEvent在IE9以下的版本中受到支持,其他的都支持addEventListener.
2.參數不同,addEventListener第三個參數可以指定是否捕獲,而attachEvent不支持捕獲.
3.事件名不同.attachEvent的第一個參數事件名前要加on.
4.this不同.詳情見下
attachEvent方式的事件綁定
attachEvent的this總是指向Window.例如:
el.attachEvent("onclick", function() { alert(this); });
腳本設置onclick方式的事件綁定
設置DOM對象的onclick屬性,this總是指向被設置的DOM元素。例如:
document.getElementById("id1").onclick = function() { console.log(this);//...}
HTML中設置onclick方式的事件綁定
在HTML中設置onclick屬性等于讓Window調用該函數,于是this總是指向Window.例如:
addEventListener方式的事件綁定
addEventListener的this總是當前正在處理事件的那個DOM對象,DOM Level2 Event Model中提到,事件處理包括捕獲階段/目標階段/冒泡階段
圖片來源:http://www.w3.org/TR/DOM-Leve...
事件當前正在流過哪個元素,this便指向哪個元素.比如兩級的DOM:
點擊div#l2后控制臺輸出為:
l1 capture?…?? l2 target?? l1 bubbling?…??
target與currentTarget
addEventListener的事件處理函數中的this不一定指向事實上被點擊的元素,但事件處理函數的參數event對象提供了target和currentTarget屬性來區分這當前對象和目標對象.我們可以將它們全部輸出看看:
l1.addEventListener("click", function(e) { console.log("l1 capture", this, e.currentTarget, e.target); }); l2.addEventListener("click", function(e) { console.log("l2 target", this, e.currentTarget, e.target); }); l1.addEventListener("click", function(e) { console.log("l1 bubbling", this, e.currentTarget, e.target); });
結果是:
l1 capture?…???…???? l2 target?????? l1 bubbling?…???…????
可見currentTarget總是和this相同,而target指向事實上被點擊的目標DOM對象.
關于XMLHttpRequest的兼容性
添加響應事件函數的兼容性
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81893.html
摘要:下兼容問題,這個最好處理,轉化成兼容就可以。暫時還沒找到專用的兼容。高度不適應高度不適應是當內層對象的高度發生變化時外層高度不能自動進行調節,特別是當內層對象使用或時。只是目前并不支持。以上都是寫中的一些兼容,建議遵循 1.IE8下兼容問題,這個最好處理,轉化成ie7兼容就可以。在頭部加如下一段代碼,然后只要在IE7下兼容了,IE8下面也就兼容了 2.flaot浮動造成IE6下面...
摘要:三創建時發現這么一句話,不知其什么意思,百度如下這樣寫可以達到的效果是如果安裝了,則使用來渲染頁面,如果沒安裝,則使用最高版本的內核進行渲染。 在網站開發中不免因為各種兼容問題苦惱,針對兼容問題,其實IE給出了解決方案Google也給出了解決方案百度也應用了這種方案去解決IE的兼容問題 百度源代碼如下 ; 百度一下,你就知道 var wpo={start:new Date*1...
摘要:三創建時發現這么一句話,不知其什么意思,百度如下這樣寫可以達到的效果是如果安裝了,則使用來渲染頁面,如果沒安裝,則使用最高版本的內核進行渲染。 在網站開發中不免因為各種兼容問題苦惱,針對兼容問題,其實IE給出了解決方案Google也給出了解決方案百度也應用了這種方案去解決IE的兼容問題 百度源代碼如下 ; 百度一下,你就知道 var wpo={start:new Date*1...
摘要:三創建時發現這么一句話,不知其什么意思,百度如下這樣寫可以達到的效果是如果安裝了,則使用來渲染頁面,如果沒安裝,則使用最高版本的內核進行渲染。 在網站開發中不免因為各種兼容問題苦惱,針對兼容問題,其實IE給出了解決方案Google也給出了解決方案百度也應用了這種方案去解決IE的兼容問題 百度源代碼如下 ; 百度一下,你就知道 var wpo={start:new Date*1...
摘要:三創建時發現這么一句話,不知其什么意思,百度如下這樣寫可以達到的效果是如果安裝了,則使用來渲染頁面,如果沒安裝,則使用最高版本的內核進行渲染。 在網站開發中不免因為各種兼容問題苦惱,針對兼容問題,其實IE給出了解決方案Google也給出了解決方案百度也應用了這種方案去解決IE的兼容問題 百度源代碼如下 ; 百度一下,你就知道 var wpo={start:new Date*1...
閱讀 895·2021-09-22 15:17
閱讀 1918·2021-09-22 15:06
閱讀 2219·2021-09-08 09:35
閱讀 5105·2021-09-01 11:43
閱讀 3480·2019-08-30 15:55
閱讀 2155·2019-08-30 12:48
閱讀 3155·2019-08-30 12:45
閱讀 1784·2019-08-29 17:31