2011-12-04 26 views
8

Tôi đang viết tiện ích mở rộng của Firefox và tôi đang sử dụng SDK bổ sung của mình; nhưng tôi không thể tìm ra cách chèn một tệp CSS cục bộ từ thư mục dữ liệu vào trang web. Nó sẽ là tuyệt vời nếu có một cách để làm điều đó thông qua gói page_mod.Tiêm tệp CSS vào trang web qua tiện ích mở rộng firefox

Trả lời

6

Tính đến Add-on SDK 1,14 có nghiệm (API có thể thay đổi) hỗ trợ cho điều này trong các mô-đun page-mod:

var pageMod = require("sdk/page-mod").PageMod({ 
    include: "*", 
    contentStyleFile: require("sdk/self").data.url("my-style.css") 
}); 

Xem Modifying Web Pages Based on URL cho một hướng dẫn phức tạp để sử dụng trang-mod.

a page on the Addon SDK's wiki thảo luận các vấn đề với việc triển khai hiện tại, mặc dù có vẻ hơi lỗi thời.

Dưới mui xe, nó sử dụng nsIDOMWindowUtils. LoadingSheet() để thêm biểu định kiểu mà không cần chạm vào DOM của trang. (API này đã được bổ sung trong Firefox 18, xem bug 737003. Trước đó bạn phải sử dụng nsIStyleSheetService mà là tương tự, nhưng không bằng tab cụ thể.)


Trước đó bạn có thể sử dụng kịch bản nội dung trang-mod để chèn phần tử liên kết hoặc kiểu dáng (example). [sửa] nhờ bình luận của lwburk, đây là một mô tả phức tạp hơn trong Greasemonkey Hacks: Tips & Tools for Remixing the Web with Firefox By Mark Pilgrim: "Alter a Page's Style" section.

+0

Nó là không thể cho tôi để sử dụng XPCOM kể từ khi tôi đang sử dụng AppBuilder SDK – italiano40

+1

@ italiano40: bạn giữ tham khảo " SDK trình xây dựng ứng dụng ". Nếu bạn ngụ ý SDK bổ trợ, vui lòng sử dụng cụm từ chính xác. Có thể sử dụng các thành phần XPCOM trong SDK bổ sung ('require ('chrome')'), mặc dù đó là một chủ đề nâng cao và sẽ làm mất hiệu lực tính tương thích về phía trước đảm bảo SDK bổ sung thường cung cấp. – Nickolay

+1

Xem thêm: http://books.google.com/books?id=KWRE2C_S4YsC&pg=PA19&lpg=PA19&dq=mark+pilgrim+add+Global+Style&source=bl&ots=SnfX5Ad2WO&sig=CKoF9A0Ala96vphTeU4mK2dbMe4&hl=en&ei=GJ3iTpeJKKK2sQLBkMDvBQ&sa=X&oi=book_result&ct=result&resnum= 1 & ved = 0CCQQ6AEwAA # v = onepage & q & f = false –

1

Để chèn CSS từ main.js ngay bây giờ có thể sử dụng "trang-mod":

var data = require("sdk/self").data; 
var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*.org", 
    contentStyleFile: data.url("my-page-mod.css") 
}); 
+0

Cảm ơn bạn đã đề cập đến điều này! Tôi đã cập nhật câu trả lời của mình cho phiên bản mới hơn của SDK Addon. – Nickolay

Các vấn đề liên quan