Как правильно получить ограничивающую рамку для элементов HTML относительно окна?

Я пишу расширение Firefox. Я пытаюсь ограничить его только XUL + Javascript (без XPCOM). Когда я получуmouseover событие для элемента HTML, мне нужно получить его ограничительную рамку в системе координат Windows (это встроенный документ XUL browser.xul).

Очевидное место для начала - поместить что-то вроде этого в обработчик события mouseover:

var rect = e.target.getBoundingClientRect();

Это здорово, но это дает мне прямоугольник в системе координат документа HTML, который относится к верхнему левому углу области рисования HTML. Я хочу отобразить элемент xul: panel, используя panel.openPopup () рядом с этим изображением (но не используя один из предопределенныхвсплывающие позиции), поэтому мне нужно перевести координаты.

Я попытался сделать следующее (в XUL dom), чтобы получить смещение для перевода, и это работает для некоторых сайтов, но не для всех, и, похоже, не учитывает перевод x, необходимый для боковых панелей.

var appcontent = document.getElementById("appcontent");
if (appcontent) {
  chromeOffsetX = r.left;
  chromeOffsetY = r.top;
}

Итак, как лучше всего подойти к этому?

Заметка: для расширений IE я бы использовал (и использовал)IDisplayServices :: TransformRect ()- есть ли что-то подобное для Firefox?

Теперь с наградой!

Ответы на вопрос(2)

Ваш ответ на вопрос