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ā)。