Как правильно получить ограничивающую рамку для элементов 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?
Теперь с наградой!