Javascript 获取HTML元素相对于窗口的边界框的正确方法是什么?
我正在写一个Firefox扩展。我试图将其限制为XUL+Javascript(无XPCOM)。当我获取HTML元素的Javascript 获取HTML元素相对于窗口的边界框的正确方法是什么?,javascript,xul,firefox-addon,bounding-box,Javascript,Xul,Firefox Addon,Bounding Box,我正在写一个Firefox扩展。我试图将其限制为XUL+Javascript(无XPCOM)。当我获取HTML元素的mouseover事件时,我需要获取它在windows坐标系中的边界框(即内置的XUL document browser.XUL) 显然,开始的地方是在mouseover事件处理程序中放置类似的内容: var rect = e.target.getBoundingClientRect(); 这很好,但这给了我HTML文档坐标系中的rect,它相对于HTML绘图区域的左上角。我想在
mouseover
事件时,我需要获取它在windows坐标系中的边界框(即内置的XUL document browser.XUL)
显然,开始的地方是在mouseover事件处理程序中放置类似的内容:
var rect = e.target.getBoundingClientRect();
这很好,但这给了我HTML文档坐标系中的rect,它相对于HTML绘图区域的左上角。我想在这个图像附近使用panel.openPopup()显示一个xul:panel元素(但不使用预定义的元素),所以我需要转换坐标
我已经尝试过(在XULDOM中)使用偏移量来进行翻译,它适用于某些站点,但不是所有站点,并且似乎没有考虑侧边栏所需的x翻译
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
那么,最好的方法是什么
注意:对于IE扩展,我会使用(并且已经使用过)-Firefox是否也有类似的功能
现在是赏金 具有计算元素相对于可见窗口的x和y的代码。不确定它是否回答了您的问题。结果表明获取位置是不相关的,因为您可以使用以下方法相对于元素定位项目:
hoverPanel.openPopup(someElement, "overlap", offsetX, offsetY, false, false);