- PR -

「F1」キーの抑止を行いたい

1
投稿者投稿内容
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2005-08-18 11:11
お世話になります。

現在、ショートカットキーに対し制御をかけようとしています。
ほとんどのショートカットキーに対しては制御がかけれたのですが、
「F1」キーだけ、制御がかけれずIEのヘルプが立ち上がってしまいます。

以下の環境で、以下のソースを書いています。
IE6.0

function keydown(ev){
ev = window.event;
elem = ev.srcElement;
switch (ev.keyCode) {
case xxx:
case 112: ←「F1」キー
※ここでalert表示!!
default:
}
  ・
  ・
  ・
}

上記の書き方では、alertで警告表示はされるのですが、ほぼ同じタイミングで
IEのヘルプが立ち上がってしまいます・・

なんとか、「F1」キーを無効にし、警告メッセージを表示する方法はないでしょうか?
アドバイスお願いします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2005-08-18 12:50
これってJavascript ?
Javascriptのことは良くわからないけど、
window.event.returnValueにfalseを設定すると、本来の動きを抑制できるって、とほほにかかれてた。

http://www.tohoho-web.com/js/event.htm
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2005-08-18 14:15
window.event.returnValue = falseを使用してみたのですが、
やはり、警告メッセージと共にIEのヘルプが表示されてしまいます。

他方法で、ヘルプ表示が立ち上がるのを抑止する方法はないでしょうか?

ご教授お願いします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-08-18 14:31
試しに、以下のような単純なjavascriptで試してみました。

document.onkeydown=func;
function func(){return false;}

確かにF1キーはreturn falseじゃ抑止できないですね。
他にも見つけた限りでF5とかAlt+Homeとか。
私は、ここらへんはブラウザの仕様と思って諦めています。
抑止する方法があったら私も知りたいです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-08-18 14:34
引用:

なんとか、「F1」キーを無効にし、警告メッセージを表示する方法はないでしょうか?
アドバイスお願いします。



きちんと調べてませんが、たぶん無理です。
F1 の機能をスクリプトで制御できたら、格好の fishing の入り口になりそうだし。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 2006-03-10 21:22
IEの場合限定だと思いますが、onHelpイベントを無効にするとヘルプを抑止できます。

<BODY onKeydown="Test()" onHelp="return false;">

半年以上経過して今更で申し訳ありませんが、今後参照される方のために。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-11 10:29
引用:

mitoさんの書き込み (2006-03-10 21:22) より:

IEの場合限定だと思いますが、onHelpイベントを無効にするとヘルプを抑止できます。
<BODY onKeydown="Test()" onHelp="return false;">


onKeyDown も防げば、FireFox などでも OK みたいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)