ホームページ >ウェブフロントエンド >jsチュートリアル >false を返します。event_javascript スキルのデフォルトのアクションをブロックするためのテスト コード

false を返します。event_javascript スキルのデフォルトのアクションをブロックするためのテスト コード

WBOY
WBOYオリジナル
2016-05-16 18:16:141279ブラウズ

まず、 があります。
次のイベントをバインドします

コードをコピーします コードは次のとおりです。

test.onkeydown = function(){
return false;
}

test.onkeyup = function (){
return false;
}

test.onkeypress = function(){
return false;
}

2 つをコメントアウトしますそれぞれがイベントであるため、各テストは 1 つのイベントのみをバインドします。
明らかに、各関数は false を返します。戻り値によってイベントのデフォルトのアクションが妨げられる場合、テキスト ボックスには何も入力できなくなります。
以下の私のテスト結果を見て、赤い部分に注目してください。
最後に、イベントを 2 回バインドし、毎回 false を返して、デフォルトのアクションを防止できるかどうかを確認しました。
私は今でも、onclick が false を返してジャンプするかどうかをテストするために a タグを使用しています。
侦听事件返回 false 是否阻止事件默认动作
  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结果 no no no
keypress * 2 no 取最后的FN结果 no no no
click * 2 no 取最后的FN结果 no no no
e.preventDefault(); yes no yes yes(keydown:no) yes
e.returnValue = false no yes no no no

確かにブラウザの性能が違うのが分かりますが、一番困るのはIEです。
最も驚くべきことは、oper でのバインディングは false を返しますが、デフォルトのアクションを防ぐことはできないことです。
そのため、今後、ブラウザのデフォルト動作を防ぐために記述する場合は、標準の方法を使用する方が良いでしょう。 (後で提供します)
そうしないと、複数人での共同作業ではかなり面倒になります。
デモが必要な場合は、電子メールで私に送ってください。投稿しません。
コードをコピー コードは次のとおりです:

/* * 悲劇は起こりません。次のコードを使用します
* 最終結論
* E(e).stop(); 時間のバブリングを防止します
* E(e).prevent(); 時間のデフォルト動作を防止します
*/
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(); false
}
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。