この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2009年8月)

2009年8月2日

Bug 6609 Webコンテンツはchromeのフォーカスを奪えるべきではない
初回投稿日時: 2009年08月02日12時54分46秒
最終更新日時: 2009年08月02日23時21分40秒
カテゴリ: Firefox Javascript Mozilla Core バグ修正 バグ再開
SNS: (list)

Webコンテンツは、element.focus();等で検索バーやロケーションバー等のchromeの要素がフォーカスを持つ場合にフォーカスを奪えるべきではない、というバグです。

ナローバンドな場合等ページの読み込みが遅い場合で、onloadイベントでフォーカスを移動させようとするページの読み込んでいる時に、その空き時間を利用してchromeで何らかの作業を開始しても、ページの読み込みが完了したと同時にフォーカスが勝手に奪われて作業が中断される、という結構鬱陶しいバグでした。

通常のページ読み込み時は、読み込み開始と共にフォーカスが自動的にWebページにセットされるので、onloadイベントでフォーカスを移動させることができなくなった、という修正ではありません。また、実際にフォーカスが移動しなかった場合でも、document.activeElementの更新は従来通り行われます。あくまで、実際のフォーカスの移動が今回の修正で制限されただけです。

修正パッチの原理は単純で、フォーカスを奪おうとしているコードが、現在フォーカスを持っているノードへのアクセス権を持っていなかったら実際のフォーカス移動は発生させない、というだけのものです。こんな単純な話がこんなにも長期間放置されていたことが驚きではありますが……

ひとまずバックアウトされています。バックアウト理由自体は濡れ衣だと思われますが、そう勘違いしてもおかしくない状況をこのパッチが作り上げているのではないかと思います。詳しくはまた後日。

関連するかもしれないエントリ

bug 6609を含むエントリ

Bug 6609 Webコンテンツはchromeのフォーカスを奪えるべきではない #2