我正在编写一个 Firefox 扩展。我试图将其限制为仅 XUL+Javascript(无 XPCOM)。当我得到一个mouseover
对于 HTML 元素的事件,我需要获取其在 Windows 坐标系中的边界框(即内置 XUL 文档 browser.xul)。
明显的起点是在鼠标悬停事件处理程序中放置类似的内容:
var rect = e.target.getBoundingClientRect();
这很棒,但这给了我 HTML 文档坐标系中的矩形,它相对于 HTML 绘图区域的左上角。我想在该图像附近使用 panel.openPopup() 显示 xul:panel 元素(但不使用预定义的之一)弹出位置 https://developer.mozilla.org/en/XUL/PopupGuide/Positioning),所以我需要翻译坐标。
我尝试执行以下操作(在 XUL dom 中)来获取偏移量来进行翻译,它适用于某些网站,但不适用于所有网站,并且似乎没有考虑侧边栏所需的 x 翻译。
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
那么,解决这个问题的最佳方法是什么?
Note:对于 IE 扩展,我会使用(并且已经使用过)IDisplayServices::TransformRect() http://msdn.microsoft.com/en-us/library/aa752662(v=VS.85).aspx——Firefox 有类似的东西吗?
现在有赏金!
事实证明,获取位置是无关紧要的,因为您可以使用以下方法相对于元素定位项目:
hoverPanel.openPopup(someElement, "overlap", offsetX, offsetY, false, false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)