A Day in the Life

keydown イベント + osx + Firefox での input.value 代入時のバグ?

keydown イベント + osx + Firefox での input.value 代入時のバグ?

OSX のデバッグ環境がないのでめっちゃはまった。Gecko の DOM イベントでも発生するし、XUL でも発生する。

  • keydown イベントハンドラ (useCapture が false) 時に
  • OSX で IME がオン
  • Enter/Tab などを押したときに
  • イベントハンドラの関数で input.value = 'string'

すると、input.value が空になる。通常 OSX の場合、Firefox なら input イベントをウォッチする(keydown で日本語入力時イベント発生しないので)が、Enter なんかのイベントは keydown でも発生して、その時に IME がオンで input.value を変更すると空になってしまう、という。いちおう setTimeout とかでタイミングをずらすとうまくいくけど、根本的な解決ではない…。

記事の一覧 >