Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取HTML元素相对于窗口的边界框的正确方法是什么?_Javascript_Xul_Firefox Addon_Bounding Box - Fatal编程技术网

Javascript 获取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绘图区域的左上角。我想在

我正在写一个Firefox扩展。我试图将其限制为XUL+Javascript(无XPCOM)。当我获取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);