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時の要素が匿名の要素だった場合、その匿名サブツリーの親とも比較して判断するようになっています。