target與currentTarget區(qū)別
只有當(dāng)事件流處在目標(biāo)階段的時(shí)候,兩個(gè)的指向才是一樣的, 而當(dāng)處于捕獲和冒泡階段的時(shí)候,target指向被單擊的對(duì)象而currentTarget指向當(dāng)前事件活動(dòng)的對(duì)象(一般為父級(jí))。target在事件流的目標(biāo)階段;currentTarget在事件流的捕獲,目標(biāo)及冒泡階段。
oninput、onchange與onpropertychange區(qū)別
1、onchange/onkeyup/onkeypress/onkeydown,onchange只是在鍵盤鼠標(biāo)手動(dòng)操作,只有元素發(fā)生改變的時(shí)候才能立即觸發(fā)。腳本觸發(fā)無(wú)效。;onkeydown/onkeyup/onkeypress在處理復(fù)制、粘貼、拖拽、長(zhǎng)按鍵等細(xì)節(jié)上也是存在問(wèn)題的。
2、onpropertychange屬性可在某些情況下解決上面存在的問(wèn)題。不用考慮是否失去焦點(diǎn),不管是js還是鍵盤鼠標(biāo)手動(dòng)操作。只要html元素屬性發(fā)生改變即可捕獲,但是,onpropretychange為IE專屬的!其他瀏覽器要監(jiān)聽就要用html5的oninput,不過(guò)IE9以下的瀏覽器不支持oninput。
3、恩,然后我們需要綜合oninput和onpropertychange二者來(lái)實(shí)現(xiàn)文本區(qū)域監(jiān)聽的功能。
4、對(duì)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è)字符就會(huì)觸發(fā),通過(guò)js改變也會(huì)觸發(fā)該事件,但是該事件IE專有。
2、oninput事件與onpropertychange事件的區(qū)別:
oninput事件是IE之外的大多數(shù)瀏覽器支持的事件,在value改變時(shí)觸發(fā),實(shí)時(shí)的,即每增加或刪除一個(gè)字符就會(huì)觸發(fā),然而通過(guò)js改變value時(shí),卻不會(huì)觸發(fā);
onpropertychange事件是任何屬性改變都會(huì)觸發(fā)的,
而oninput卻只在value改變時(shí)觸發(fā),
oninput要通過(guò)addEventListener()來(lái)注冊(cè),
onpropertychange注冊(cè)方式跟一般事件一樣。(此處都是指在js中動(dòng)態(tài)綁定事件,以實(shí)現(xiàn)內(nèi)容與行為分離)
3、oninput與onpropertychange失效的情況:
(1)oninput事件:
a). 當(dāng)腳本中改變value時(shí),不會(huì)觸發(fā);
b).從瀏覽器的自動(dòng)下拉提示中選取時(shí),不會(huì)觸發(fā)。
(2)onpropertychange事件:
當(dāng)input設(shè)置為disable=true后,onpropertychange不會(huì)觸發(fā)。