Bug 6609 Webコンテンツはchromeのフォーカスを奪えるべきではない
初回投稿日時: 2009年08月02日12時54分46秒
最終更新日時: 2009年08月02日23時21分40秒
カテゴリ: Firefox Javascript Mozilla Core バグ修正 バグ再開
SNS:
Tweet (list)
Webコンテンツは、element.focus();
等で検索バーやロケーションバー等のchromeの要素がフォーカスを持つ場合にフォーカスを奪えるべきではない、というバグです。
ナローバンドな場合等ページの読み込みが遅い場合で、onload
イベントでフォーカスを移動させようとするページの読み込んでいる時に、その空き時間を利用してchromeで何らかの作業を開始しても、ページの読み込みが完了したと同時にフォーカスが勝手に奪われて作業が中断される、という結構鬱陶しいバグでした。
通常のページ読み込み時は、読み込み開始と共にフォーカスが自動的にWebページにセットされるので、onload
イベントでフォーカスを移動させることができなくなった、という修正ではありません。また、実際にフォーカスが移動しなかった場合でも、document.activeElement
の更新は従来通り行われます。あくまで、実際のフォーカスの移動が今回の修正で制限されただけです。
修正パッチの原理は単純で、フォーカスを奪おうとしているコードが、現在フォーカスを持っているノードへのアクセス権を持っていなかったら実際のフォーカス移動は発生させない、というだけのものです。こんな単純な話がこんなにも長期間放置されていたことが驚きではありますが……
ひとまずバックアウトされています。バックアウト理由自体は濡れ衣だと思われますが、そう勘違いしてもおかしくない状況をこのパッチが作り上げているのではないかと思います。詳しくはまた後日。