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