那些小區(qū)別

target與currentTarget區(qū)別
只有當(dāng)事件流處在目標(biāo)階段的時(shí)候,兩個(gè)的指向才是一樣的, 而當(dāng)處于捕獲和冒泡階段的時(shí)候,target指向被單擊的對象而currentTarget指向當(dāng)前事件活動(dòng)的對象(一般為父級)。target在事件流的目標(biāo)階段;currentTarget在事件流的捕獲,目標(biāo)及冒泡階段。
oninput、onchange與onpropertychange區(qū)別
1、onchange/onkeyup/onkeypress/onkeydown,onchange只是在鍵盤鼠標(biāo)手動(dòng)操作,只有元素發(fā)生改變的時(shí)候才能立即觸發(fā)。腳本觸發(fā)無效。;onkeydown/onkeyup/onkeypress在處理復(fù)制、粘貼、拖拽、長按鍵等細(xì)節(jié)上也是存在問題的。
2、onpropertychange屬性可在某些情況下解決上面存在的問題。不用考慮是否失去焦點(diǎn),不管是js還是鍵盤鼠標(biāo)手動(dòng)操作。只要html元素屬性發(fā)生改變即可捕獲,但是,onpropretychange為IE專屬的!其他瀏覽器要監(jiān)聽就要用html5的oninput,不過IE9以下的瀏覽器不支持oninput。
3、恩,然后我們需要綜合oninput和onpropertychange二者來實(shí)現(xiàn)文本區(qū)域監(jiān)聽的功能。
4、對IE使用onpropertychange,其他瀏覽器用oninput:

var ie = !!window.ActiveXObject;  
if(ie){  
    object.onpropertychange = fn;  
}else{  
    object.addEventListener("input",fn,false);  
} 
1、onchange事件與onpropertychange事件的區(qū)別: 
onchange事件在內(nèi)容改變(兩次內(nèi)容有可能還是相等的)且失去焦點(diǎn)時(shí)觸發(fā);
onpropertychange事件卻是實(shí)時(shí)觸發(fā),即每增加或刪除一個(gè)字符就會觸發(fā),通過js改變也會觸發(fā)該事件,但是該事件IE專有。 
2、oninput事件與onpropertychange事件的區(qū)別: 
oninput事件是IE之外的大多數(shù)瀏覽器支持的事件,在value改變時(shí)觸發(fā),實(shí)時(shí)的,即每增加或刪除一個(gè)字符就會觸發(fā),然而通過js改變value時(shí),卻不會觸發(fā);
  onpropertychange事件是任何屬性改變都會觸發(fā)的,
  而oninput卻只在value改變時(shí)觸發(fā),
  oninput要通過addEventListener()來注冊,
  onpropertychange注冊方式跟一般事件一樣。(此處都是指在js中動(dòng)態(tài)綁定事件,以實(shí)現(xiàn)內(nèi)容與行為分離) 
3、oninput與onpropertychange失效的情況: 
(1)oninput事件:
     a). 當(dāng)腳本中改變value時(shí),不會觸發(fā);
     b).從瀏覽器的自動(dòng)下拉提示中選取時(shí),不會觸發(fā)。 
(2)onpropertychange事件:
     當(dāng)input設(shè)置為disable=true后,onpropertychange不會觸發(fā)。 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容