1

特定の のイベントを呼び出した場合preventDefault()、デフォルトはどのくらいの期間防止されますか? ブラウザー セッションの存続期間中ですか、それとも特定のページが読み込まれている間だけですか? 動作は同じですか?keypresskeyCodestopPropagation()

いくつかのコード例:

<script type="text/javascript">
<![CDATA[

  function keydownhandler(e)
  {
    switch (e.keyCode)
    {
        case VK_BACK:
                case 461:
        preventDefault();
        break;

        default:
        break;
    }
  }


  document.addEventListener("keydown", keydownhandler, true);
]]>
</script>
4

3 に答える 3

1

その特定のイベントの特定のインスタンスについては、永久に防止されます。

キーが 2 回押されると、イベントの 2 番目のインスタンスが呼び出されるkeypressため、最初のイベントがあったという理由だけでデフォルト イベントが妨げられることはありません。

于 2012-09-12T13:10:12.083 に答える
1

preventDefault()デフォルトのアクションが発生するのを防ぎます。つまり、formEnter キーが押されたときにブラウザが投稿します。そして、この既定のアクションは、イベントのこのインスタンスに対して永続的に防止されます。次に押されたときenterに、そのキーを押さないようにする必要があります。

stopPropagation()イベントが発生した要素の上にあるすべての要素にイベントがバブリングするのを止めます。

<div>
    <a></a>
</div>

<a>-tagをクリックすると、div までバブルclickイベントが発生します。stopPropagation()これを防ぎます。

編集:あなたの場合、keyCode==VK_BACKまたは461を含むすべてのイベントは、デフォルトのアクションにすることができません。

于 2012-09-12T13:14:31.047 に答える
0

preventDefault は、ハンドラー関数に渡されるイベント インスタンスで操作されるため、2 つの異なる「変更」イベント ハンドラーを持つ 2 つの入力がある場合、1 つが preventDefault を持っていても、両方が停止されることはありません。

stopPropagation は、ハンドラーに渡されるイベントでの操作とまったく同じです。

于 2012-09-12T13:14:07.663 に答える