return false,對阻止事件默認(rèn)動作的一些測試代碼
更新時間:2010年11月17日 20:37:20 作者:
很明顯我們每個函數(shù)都返回false,如果返回值可以阻止事件默認(rèn)動作,那么文本框?qū)o法輸入任何內(nèi)容。
看下面我測試的結(jié)果,注意紅的部分。
首先頁面上有一個 <textarea id="test"></textarea>
我們?yōu)槠浣壎ㄒ韵率录?
test.onkeydown = function(){
return false;
}
test.onkeyup = function(){
return false;
}
test.onkeypress = function(){
return false;
}
我們分別注釋掉其中的兩個事件,每次測試僅綁定一個事件。
很明顯我們每個函數(shù)都返回false,如果返回值可以阻止事件默認(rèn)動作,那么文本框?qū)o法輸入任何內(nèi)容。
看下面我測試的結(jié)果,注意紅的部分。
最后我分別把事件綁定兩次,每次返回false看是否能阻止默認(rèn)動作。
還是用了一個a標(biāo)記測試onclick 返回false 是否跳轉(zhuǎn)。
可以看出瀏覽器表現(xiàn)確實不太一樣,當(dāng)然IE是最麻煩的東西了。
最意外的是在oper中 綁定down 返回false,居然也不能阻止默認(rèn)動作。
所以以后在寫要阻止瀏覽器默認(rèn)動作的時候,還用標(biāo)準(zhǔn)的方法比較好。(后面我提供了)
不然在多人協(xié)作的工作中,會相當(dāng)麻煩。
演示的deom 有需要的可以發(fā)郵件給我。我就不貼上來了。
/* * 用下面的代碼就不會發(fā)生悲劇了
* 最終結(jié)論
* E(e).stop(); 阻止時間冒泡
* E(e).prevent();阻止時間默認(rèn)行為
*/
var E = function(e){
e = window.event || e;
return {
stop: function() {
if (e && e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true
},
prevent: function() {
if (e && e.preventDefault) e.preventDefault();
else e.returnValue = false
}
}
}
我們?yōu)槠浣壎ㄒ韵率录?
復(fù)制代碼 代碼如下:
test.onkeydown = function(){
return false;
}
test.onkeyup = function(){
return false;
}
test.onkeypress = function(){
return false;
}
我們分別注釋掉其中的兩個事件,每次測試僅綁定一個事件。
很明顯我們每個函數(shù)都返回false,如果返回值可以阻止事件默認(rèn)動作,那么文本框?qū)o法輸入任何內(nèi)容。
看下面我測試的結(jié)果,注意紅的部分。
最后我分別把事件綁定兩次,每次返回false看是否能阻止默認(rèn)動作。
還是用了一個a標(biāo)記測試onclick 返回false 是否跳轉(zhuǎn)。
偵聽事件返回 false 是否阻止事件默認(rèn)動作 | |||||
---|---|---|---|---|---|
chrome | IE-8 | firfox | oper | Safari | |
onkeydown | yes | yes | yes | no | yes |
onkeyup | no | no | no | no | no |
onkeypress | yes | yes | yes | yes | yes |
onclick | yes | yes | yes | yes | yes |
keydown * 2 | no | 取最后的FN結(jié)果 | no | no | no |
keypress * 2 | no | 取最后的FN結(jié)果 | no | no | no |
click * 2 | no | 取最后的FN結(jié)果 | no | no | no |
e.preventDefault(); | yes | no | yes | yes(keydown:no) | yes |
e.returnValue = false | no | yes | no | no | no |
可以看出瀏覽器表現(xiàn)確實不太一樣,當(dāng)然IE是最麻煩的東西了。
最意外的是在oper中 綁定down 返回false,居然也不能阻止默認(rèn)動作。
所以以后在寫要阻止瀏覽器默認(rèn)動作的時候,還用標(biāo)準(zhǔn)的方法比較好。(后面我提供了)
不然在多人協(xié)作的工作中,會相當(dāng)麻煩。
演示的deom 有需要的可以發(fā)郵件給我。我就不貼上來了。
復(fù)制代碼 代碼如下:
/* * 用下面的代碼就不會發(fā)生悲劇了
* 最終結(jié)論
* E(e).stop(); 阻止時間冒泡
* E(e).prevent();阻止時間默認(rèn)行為
*/
var E = function(e){
e = window.event || e;
return {
stop: function() {
if (e && e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true
},
prevent: function() {
if (e && e.preventDefault) e.preventDefault();
else e.returnValue = false
}
}
}
相關(guān)文章
有關(guān)suggest快速刪除后仍然出現(xiàn)下拉列表的bug問題
寫suggest的時候,有時我們快速刪除輸入框的文字后,但是suggest下拉列表還有出現(xiàn),導(dǎo)致的原因是因為ajax異步請求造成的,下面通過本文給大家分享下解決方法,感興趣的朋友一起看看2016-12-12javascript 獲取多條數(shù)據(jù)(模擬ajax獲取數(shù)據(jù))
javascript 獲取多條數(shù)據(jù)(模擬ajax獲取數(shù)據(jù)),這樣的好處不用額外的ajax讀取鏈接,減輕服務(wù)器負擔(dān)。2009-06-06兩種方法實現(xiàn)在HTML頁面加載完畢后運行某個js
這篇文章主要介紹了通過兩種方法實現(xiàn)在HTML頁面加載完畢后運行某個js,需要的朋友可以參考下2014-06-06