- - PR -
ショートカットキー抑止について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-08 13:50
JavaScriptの質問です。(投稿する場所がわかりませんでした・・)
「Alt + ←」等のショートカットキーを抑止するため、 以下のようなコードを書いているのですが、うまくいきません。 document.onkeydown=keydown; function keydown(ev) { var CancelFlg; CancelFlg = 0; ev = window.event; if (ev.altKey == true) { //alert("1"); switch (ev.keyCode) { case 37: // ← case 39: // → CancelFlg = 1; break; default: CancelFlg = 0; } } if (CancelFlg == 1) { alertEx("当キー操作は禁止しています。") ev.keyCode=0; return false; } } function alertEx(msg) { altmsg = new String(msg); setTimeout("alert(altmsg)",0); }; エラー時にalert()で直接メッセージ表示していないのは、 他のメッセージ表示も共通でalertEx()関数を使用しているからだけです。 上記のコードにより、ショートカットキー押下時にエラーメッセージが表示されたのですが、 ショートカットキーで押された内容が無効にならずに、前ページに遷移してしまいます。 alertEx()関数ではなく直接alert()関数を呼ぶと正常に動作します。 原因が全くわかりません。 環境:Win2000pro IE6.0 アドバイスお願いします。 | ||||
|
投稿日時: 2004-10-08 14:13
こんにちわ。中村です。 イベントを無効にすればよいかと思われますので、 window.eventのreturnValueに対してfalseを設定するように ev.returnValue = false; を追加すれば大丈夫だと思います。 [ メッセージ編集済み 編集者: 中村 編集日時 2004-10-08 14:15 ] | ||||
|
投稿日時: 2004-10-08 14:42
中村さん、ありがとうございます。
CancelFlg==1(コード参照)の際に ev.returnValue = false; を追加してみましたが、今までと同様に「ショートカットキーで押された内容が無効にならずに、前ページに遷移」してしまいます。 何かsetTimeout()が影響しているのでしょうか? | ||||
|
投稿日時: 2004-10-08 15:40
一度ソースを貼り付けて実行した所、 setTimeout()が影響していてうまく動作しませんね。 かなり安直に考えてました… clearTimeoutを直後につかってもかわらないですし… | ||||
|
投稿日時: 2004-10-08 17:52
中村さん、ありがとうございます。
とりあえずは直接、alert()で対応します。 | ||||
|
投稿日時: 2004-10-08 18:19
あいつーです。
以前似たような処理をしたときはkeyCodeを 無理やりDELキーのものに変え、 その上でreturn falseをするとうまく行ったような気がします。 | ||||
|
投稿日時: 2004-10-08 22:01
あいつーさん、ありがとうございます。
一度試してみます。 |
1