Firefoxの拡張機能を書いています。XUL + Javascript(XPCOMなし)だけに制限しようとしています。HTML要素のイベントを取得するときmouseover
は、Windows座標系(組み込みのXULドキュメントbrowser.xul)でその境界ボックスを取得する必要があります。
開始するための明白な場所は、マウスオーバーイベントハンドラーに次のようなものを置くことです。
var rect = e.target.getBoundingClientRect();
これは素晴らしいことですが、HTML描画領域の左上隅を基準にしたHTMLドキュメントの座標系の四角形が得られます。この画像の近くにpanel.openPopup()を使用してxul:panel要素を表示したいので(ただし、事前定義されたポップアップ位置の1つは使用しません)、座標を変換する必要があります。
私は(XUL domで)次のことを実行して、変換を行うためのオフセットを取得しようとしました。これは一部のサイトで機能しますが、すべてではなく、サイドバーに必要なx変換を考慮していないようです。
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
それで、これにアプローチするための最良の方法は何ですか?
注:IE拡張機能の場合、 IDisplayServices :: TransformRect()を使用します(使用しました) — Firefoxに似たものはありますか?
今、賞金があります!