事象
たとえばtextareaから、フォーカスが外れた(blurした)ときに、ポップアップを表示させたいとして、
See the Pen Untitled by Hidenobu Miyata (@gari8641) on CodePen.
こういう感じのコードを書いて、
Google Chrome 上で動かすと、
alert() で表示させたポップアップメニューに対して[OK]ボタンを押下しても、即座にポップアップメニューが再度表示されてしまう。何度[OK]ボタンを押下しても、ポップアップメニューが消えない。
原因
Chrome特有?
IEやFireFoxでは起きないっぽい。
firefoxならフォーカスが移動してくれない程度で済むのですが、
chromeだと閉じても閉じても延々とalertが発動し続けるという悪夢が。
https://igreks.jp/dev/chrome%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%ABfocus%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E5%86%85%E3%81%A7alert%E3%81%99%E3%82%8B%E3%81%A8%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%81%8C%E5%BB%B6/
ところがGoogle Chromeを使用した場合、「Hello!!」のダイアログを消しても消しても、延々とダイアログが表示し続ける無限ループが発生する場合がある。
対応
See the Pen Untitled by Hidenobu Miyata (@gari8641) on CodePen.
こんな感じで、textareaなど.focus(); をいれてやる。
コメント