Masayukiさん、XP modeでのテストと検証用のコード、ありがとうございます。
引用:
このURLをロケーションバーに入れて読み込ませ、表示された空白のコンテンツ部分をクリックして、その後、マウスで別のアプリに切り替えてから、Alt+TabでFirefoxに戻り、Altキーを押すと、どう表示されますか?
日時を表示するようにコードを修正してテストしてみました。
コード:
data:text/html,<p id="p"></p><script>function datetime() {now = new Date(); str = now.getFullYear()+"年";str+= now.getMonth()+1+"月"; str+= now.getDate()+"日 ";str += now.getHours()+"時";str+= now.getMinutes()+"分"; str+= now.getSeconds()+"秒 "; return str;} function keyname(event) { for (var s in event) { if (s.match(/^DOM_VK_/) && event[s] == event.keyCode) { return s; } } return "0x" + event.keyCode.toString(16); } function log(event) { var p = document.getElementById("p"); p.innerHTML = datetime() + event.type + " keyCode=" + keyname(event) + ", charCode=" + event.charCode + " (0x" + event.charCode.toString(16) + "), shift=" + event.shiftKey + ",ctrl=" + event.ctrlKey + ", alt=" + event.altKey + ", meta=" + event.metaKey + "<BR>" + p.innerHTML; event.preventDefault(); } window.addEventListener("keydown", log, false); window.addEventListener("keypress", log, false); window.addEventListener("keyup", log, false);</script>
その結果、ALTキーの押し下げは正常に検出されていることが判りました。
2012年2月7日 13時12分35秒 keyup keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=false, meta=false
2012年2月7日 13時12分35秒 keydown keyCode=DOM_VK_ALT, charCode=0 (0x0), shift=false,ctrl=false, alt=true, meta=false
ところで、不思議なことに提示していただいたコードを実行中のウィンドウは、ウィンドウ切り替え直後の1回目のALTキーで正常にファイルメニューがアクティブになりました。
でも、同時に開いている他のウィンドウは、やはりウィンドウ切り替え直後の1回目のALTキーに反応しませんでした。[/code]