Sto scrivendo un estensione per Firefox. Sto cercando di limitarlo solo a XUL + Javascript (senza XPCOM). Quando ricevo un evento mouseover
per un elemento HTML, ho bisogno di ottenere la sua casella di delimitazione nelle finestre sistema di coordinate (che è il built-in XUL documento browser.xul).Qual è il modo corretto per ottenere la bounding box per gli elementi HTML relativi alla finestra?
L'ovvio punto di partenza è quello di mettere qualcosa di simile nel gestore eventi mouseover:
var rect = e.target.getBoundingClientRect();
Che è grande, ma che mi dà il rect nel sistema di coordinate del documento HTML, che è relativo al angolo in alto a sinistra dell'area di disegno HTML. Voglio visualizzare un elemento xul: panel usando panel.openPopup() vicino a questa immagine (ma non usando uno dei predefiniti popup positions), quindi ho bisogno di tradurre le coordinate.
Ho provato a fare quanto segue (nella dom XUL) per ottenere l'offset di fare la traduzione, e funziona per alcuni siti, ma non tutti, e non sembra prendere in considerazione la traduzione x necessaria per i sidebar.
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
Allora, qual è il modo migliore per affrontare questo?
Nota: per le estensioni di IE avrei usato (e ho usato) IDisplayServices::TransformRect() -Esiste qualcosa di simile per Firefox?
Ora con taglie!