Tiện ích mở rộng Firefox của bạn chạy trong ngữ cảnh Javascript khác với trang HTML của bạn, do đó tiện ích mở rộng không thể được gọi trực tiếp từ Javascript trong trang HTML của bạn.
Tuy nhiên, bạn có thể thiết kế tiện ích để cho phép truy cập từ HTML. HTML Javascript thường không được phép truy cập đối tượng Component, vì vậy bạn cần cho phép mã HTML một cách để nhận được đối tượng trong phần mở rộng của bạn. Để thực hiện điều này, hãy tạo một thành phần XPCOM trong phần mở rộng của bạn và đặt đối tượng trong thể loại "Thuộc tính toàn cầu JavaScript" thông qua đối tượng nsICategoryManager. Tên mục nhập là chuỗi được sử dụng từ Javascript không có đặc quyền, giá trị là ID hợp đồng cho lớp XPCOM của bạn.
Tuy nhiên, bạn cũng cần phải cho phép truy cập Javascript không có đặc quyền vào đối tượng của mình hoặc trình quản lý bảo mật tập lệnh sẽ chặn quyền truy cập. Để cho phép điều này, hãy thực hiện nsISecurityCheckedComponent - cung cấp canCreateWrapper (trong nsIIDPtr iid), canCallMethod (trong nsIIDPtr iid, trong wstring methodName), canGetProperty (trong nsIIDPtr iid, trong wstring propertyName) và canSetProperty (trong nsIIDPtr iid, trong wstring propertyName) để trả về allAccess cho các thuộc tính được phép và không cóAccess.
Hãy cẩn thận những gì bạn làm với đầu vào của người dùng và những gì bạn cho phép truy cập - rất dễ vô tình tạo lỗ hổng bảo mật trong trình duyệt thực hiện việc này.
Tôi đã nhận lỗi này khi tôi cố gắng viết vào một tập tin xml bên trong phần mở rộng: Lỗi: Permission denied cho để có được tài sản XPCComponents.classes Bất kỳ ý tưởng làm thế nào để giải quyết này? –
Bạn đang đề cập đến một yếu tố