Что надлежащий путь состоит в том, чтобы получить ограничительную рамку для элементов HTML относительно Окна?

Я пишу расширение Firefox. Я пытаюсь ограничить его просто XUL+Javascript (никакой XPCOM). Когда я получаю a mouseover событие для элемента HTML, я должен получить его ограничительную рамку в системе координат окон (который является встроенным документом 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?

Теперь с щедростью!

7
задан i_am_jorf 20 July 2010 в 17:55
поделиться

2 ответа

Оказалось, что получение местоположения не имеет значения, поскольку вы можете позиционировать элементы относительно элемента, используя что-то вроде:

hoverPanel.openPopup(someElement, "overlap", offsetX, offsetY, false, false);
0
ответ дан 8 December 2019 в 01:41
поделиться

Этот вопрос содержит код, который определяет x и y элемента относительно видимого окна. Не уверен, что это ответ на ваш вопрос.

0
ответ дан 8 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: