ユーザーがページ内のテキストを選択したときに、Firefox アドオン SDK を使用してパネルを作成しています。パネルは常に、選択したテキストの右下に表示される必要があるため、(コンテンツ スクリプトで) 以下を使用してその位置を取得します。
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var rect = range.getBoundingClientRect();
var position = {left: rect.right, top: rect.bottom}
...
この位置はイベントで送信され、パネルの配置に使用されます。これはうまく機能しますが、次の 2 つの問題があります。
- ページのズーム レベル
- ブラウザのサイドバー
getBoundingClientRect (および getClientRects でさえも) によって返される位置はこれらを考慮していないため、サイドバーが開いている場合 (左側のサイドバーによってパネルがテキストに対して左側に移動する)、またはズームが適用されている場合、パネルには右側の位置からのオフセットがあります。 .
パネルを表示する実際の位置を常に計算する方法はありますか? (おそらく sdk/window/utils モジュールを使用していますか?)