hasFocusプロパティ
昨日やってたやつで、SafariStandの「キー入力しただけで検索ウィンドウが開く」機能を回避するためにonkeydownイベントの最後でstopPropagation()すればいいってことを書いたんだけどそれだとテキスト入力もできなくなってしまうという由々しき事態に気づいたのでその対策。
結局、
- テキスト入力中はショートカットキー無効
という仕様であればいいわけで、そのためにはテキストボックスにフォーカスがあるかどうかを知りたいんだけどそういうプロパティってないのでしょうか??
focus()で設定するってのはあるんだけど状態を示すものがない。単なる調査不足なのか本当にないのかよくわかんないんだけど、まあいいかってことでonFocusプロパティを追加してみました。
Index: setinterval.html =================================================================== --- setinterval.html (revision 19) +++ setinterval.html (working copy) @@ -78,11 +78,26 @@ } function onInit() { + registerHandler(); setIntervalTime(1000); startSlideShow(); } +function registerHandler() { + var form = document.setIntervalForm; + form.time.onfocus = function() { + this.hasFocus = true; + } + form.time.onblur = function() { + this.hasFocus = false; + } +} + document.onkeydown = function(event) { + if ( document.setIntervalForm.time.hasFocus ) { + return; + } + var code = event.keyCode; // 74:j // 75:k
こんな感じでいいのかな。