Я пишу расширение 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?
Теперь с наградой!