Tôi đang viết một tiện ích mở rộng của Firefox. Tôi đang cố gắng để giới hạn nó chỉ XUL + Javascript (không có XPCOM). Khi tôi nhận được sự kiện mouseover
cho một phần tử HTML, tôi cần có hộp giới hạn của nó trong hệ thống tọa độ cửa sổ (đó là trình duyệt tài liệu XUL tích hợp).Cách thích hợp để nhận hộp giới hạn cho các phần tử HTML liên quan đến Cửa sổ là gì?
Nơi hiển nhiên để bắt đầu là đặt một cái gì đó như thế này trong xử lý sự kiện mouseover:
var rect = e.target.getBoundingClientRect();
Mà là tuyệt vời, nhưng điều đó mang lại cho tôi rect trong phối hợp hệ thống tài liệu HTML, mà là tương đối so với góc trên bên trái của vùng vẽ HTML. Tôi muốn hiển thị một phần tử xul: panel bằng cách sử dụng panel.openPopup() gần ảnh này (nhưng không sử dụng một trong số popup positions được xác định trước), vì vậy tôi cần dịch các tọa độ.
Tôi đã thử làm như sau (trong XUL dom) để có được bù đắp để làm bản dịch, và nó hoạt động cho một số trang web, nhưng không phải tất cả, và dường như không tính đến x dịch cần thiết cho sidebars.
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
Vì vậy, cách tốt nhất để tiếp cận điều này là gì?
Lưu ý: dành cho các tiện ích mở rộng của IE Tôi sẽ sử dụng (và đã sử dụng) IDisplayServices::TransformRect() — có điều gì tương tự với Firefox không?
Bây giờ với tiền thưởng!