当用户在页面中选择文本时,我正在使用 Firefox Add-on SDK 创建一个面板。该面板应始终显示在所选文本的下方和右侧,因此我使用以下内容(在内容脚本中)来获取其位置:
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var rect = range.getBoundingClientRect();
var position = {left: rect.right, top: rect.bottom}
...
该位置在事件中发送并用于定位面板。这很好用,但有两个问题:
- 页面缩放级别
- 浏览器边栏
getBoundingClientRect(甚至 getClientRects)返回的位置不考虑这些,因此如果侧边栏打开(左侧边栏使面板相对于文本向左移动)或应用缩放,则面板与右侧位置有偏移.
有没有办法总是计算应该显示面板的实际位置?(也许使用 sdk/window/utils 模块?)