3

アプリケーションのシナリオでは意味がないため、いくつかのデフォルトのブラウザー キー (CTRL + F、ALT + ENTER) を無効にしたいと考えています。私がこれまで読んだ中で、IE9 でこれらのイベントを無効にする最も重要なことは、この場合は keyCode を 0 に設定することですが、これを行うと常に「アクセスが拒否されました」というエラーが発生します。

これは私のコードです:

var fnOnKeyDown = function(event)
{
  if(!event)
  {
    event = window.event;
  }
  if(event.preventDefault)
  {
    event.preventDefault();
  }
  event.returnValue = false;
  event.cancelBubble = true;
  event.keyCode = 0;      
  return false;  
};

window.document.onkeydown = fnOnKeyDown;

前述のように、行 event.keyCode = 0 は「アクセスが拒否されました」というエラーをスローします。それを削除するか、空の try/catch ブロックに入れると、エラーはスローされませんが、デフォルトのブラウザー キー処理は抑制されなくなりました。

4

2 に答える 2

1

event.preventDefault()イベント自体のプロパティを変更する必要はありevent.stopPropagation()ません。

于 2013-04-27T11:16:13.160 に答える
1

本当にie7のことじゃないの?ie9では問題ないようでした...

とにかく、これはあなたの問題に関するマイクロソフトからの投稿です

http://support.microsoft.com/kb/934364

この問題を解決するには、event.keyCode プロパティを割り当てるコードを変更して、値が変更されないようにします。コードの変更により、SHIFT キーまたは CTRL キーを使用して、ローカル ディスクからページをロードできます。

または、Web サーバーで Web ページをホストすることもできます。これにより、スクリプトの event.keyCode プロパティが正しく実行されるようになります。

また、可能であれば、jquery の使用をお勧めします。このようなフレームワークは、多くの場合、共通のインターフェイスを介してさまざまなブラウザーの問題を処理します。

于 2013-04-21T19:19:08.360 に答える