Bug-org 674770 contenteditable breaks middle-click to open links when middlemouse.paste=true
初回投稿日時: 2011年11月27日10時06分24秒
最終更新日時: 2011年11月27日10時20分00秒
カテゴリ: Mozilla Core Mozilla11 バグ修正
SNS:
Tweet (list)
中クリックでの貼り付けが有効になっていると、contenteditable
な要素のあるドキュメント内では編集不能なa
要素であっても、中クリックでリンク先を開けないというバグです。
HTMLエディタのインスタンスはドキュメントごとにひとつしかなく、ドキュメントにイベントリスナを登録して全てのHTMLエディタの処理を行っています。例えば、
<body> <p id="p1" contenteditable="true">Here is an editable paragraph.</p> <p id="p2" contenteditable="true">Here is another editable pragraph.</p> </body>
この例では、#p1
にフォーカスが移動した場合は、DOM selectionのrange (つまり、キャレットや選択範囲)をその中に移し、入力イベントはそのrangeに対して実行します。#p2
にフォーカスが移動すると、やはりrangeを#p2
内に移動して同様に処理しています。
ですので、以前、キーイベントやIMEイベントで修正した様に、HTMLエディタは、処理内容によっては編集可能な要素がターゲットとなったイベントかどうかを確認しなくてはいけません。中クリックでの貼り付け、というのはもちろん、編集可能な要素がターゲットになっている場合にのみ実行しなくてはいけませんので、そのように修正しました。
ちなみに、
<html> <head></head> <body contenteditable="true"></body> </html>
このように、ルート要素は編集可能ではないものの、body
要素が編集可能な場合に、ルート要素をターゲットにしたマウスイベントが来た場合、上記の判定を行う前にターゲットをbody
要素だと読み替えて処理を行います。ですので、body要素の高さを確保しなくてはマウスでキャレットを移したり、中クリックでの貼り付けができない、ということはありません。