Bug-org 590819 Click event isn't fired when mouse button down on border of <input> and mouse button up on padding box of it
初回投稿日時: 2010年09月04日11時44分05秒
最終更新日時: 2010年09月04日11時46分23秒
カテゴリ: Javascript Mozilla Core バグ修正
SNS:
Tweet (list)
<input>
や<textarea>
のborder
上でマウスのボタンを押し、そのままマウスカーソルを動かしてborder
より内側でボタンを離した場合に、クリックイベントが発生しない、というバグです。
もともと、Bug-org 552707の修正中にまったく関係無い自動テストがMacでのみ、通らなくなってしまう、ということから偶然発見したバグです。Macでのみ、たまたま生成されたmousedown
イベントがborder
上で発生していたため、新しいロジックでは問題が出ていたのでした。
Geckoの<input>
や<textarea>
は、単にinline-block
を生成していて、これがborder
を生成します。そして、その内部に匿名のdiv
要素を作り、これをエディタのルート要素とし、エディタの内容をこのdiv
要素の下に匿名のテキストノードとしてぶら下げていきます。
click
イベントは同じ要素上でmousedown
イベントと、mouseup
イベントの両方が発生した場合に生成されるイベントですが、これが、input
要素で発生した後、匿名div
要素で発生した、と判断され、click
イベントが生成されていませんでした。
今回の修正により、mouseup
時の要素が匿名の要素だった場合、その匿名サブツリーの親とも比較して判断するようになっています。