Was ist der richtige Weg, um einen Begrenzungsrahmen für HTML-Elemente relativ zum Fenster zu erhalten?
Ich schreibe eine Firefox-Erweiterung. Ich versuche es auf XUL + Javascript (kein XPCOM) zu beschränken. Wenn ich ein @ bekommouseover
ei einem @ -Ereignis für ein HTML-Element muss der Begrenzungsrahmen im Windows-Koordinatensystem abgerufen werden (das ist das integrierte XUL-Dokument browser.xul).
Der naheliegende Startpunkt ist, so etwas in den Mouseover-Event-Handler einzufügen:
var rect = e.target.getBoundingClientRect();
Was ist toll, aber das gibt mir das Rect im Koordinatensystem des HTML-Dokuments, das relativ zur oberen linken Ecke des HTML-Zeichenbereichs ist. Ich möchte ein xul: panel-Element mit panel.openPopup () in der Nähe dieses Bildes anzeigen (ohne eines der vordefinierten @ -Elemente zu verwendenpopup positions), also muss ich die Koordinaten übersetzen.
Ich habe Folgendes versucht (im XUL-Bereich), um die Offset-Werte für die Übersetzung zu erhalten, und es funktioniert für einige Websites, aber nicht für alle. Die für Seitenleisten erforderliche X-Übersetzung scheint nicht berücksichtigt zu werden.
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
Also, wie geht man das am besten an?
Hinwei: für IE-Erweiterungen würde ich @ verwenden (und verwendet habeIDisplayServices :: TransformRect () - Gibt es für Firefox etwas Ähnliches?
Jetzt mit Kopfgeld!