2012-07-19 34 views
26

Tôi đang cố gắng để tiêm CSS của tôi từ JavaScript được tiêm như kịch bản nội dung:Cách chèn CSS bằng tệp tập lệnh nội dung trong tiện ích của Chrome?

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["script.js"] 
    } 
], 

tôi thấy similar question về tiêm CSS, nhưng tôi gặp phải một vấn đề khi sử dụng mã từ accepted answer. Dưới đây là nội dung script.js tôi:

var link = document.createElement("link"); 
link.href = chrome.extension.getURL("style.css"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
document.getElementsByTagName("head")[0].appendChild(link); 

Sau khi tôi tải một số trang báo này xuất hiện trong giao diện điều khiển:

chối tải của chrome-mở rộng: //phkgaaiaakklogbhkdnpjncedlbamani/fix.css. Tài nguyên phải được liệt kê trong khóa biểu trưng web_accessible_resources theo thứ tự để được các trang bên ngoài tiện ích tải.

Có cách nào để sửa lỗi này không? Hoặc, có thể, một số cách khác để tiêm CSS từ tệp JavaScript đó?

Lưu ý: Tôi không thể bao gồm biểu định kiểu trực tiếp từ tệp kê khai.

Trả lời

45

Bạn có thể thêm vào trường quyền của tệp kê khai; Xem web_accessible_resources. Vì vậy, bạn sẽ thêm video này vào manifest:

, "web_accessible_resources": [ 
     "fix.css" 
    ] 

Xem thêm "Programmatic injection". và insertCSS().

Đối với hầu hết các ứng dụng, hãy quên đi tất cả những gì createElement mã và chỉ cần thêm các tập tin CSS để manifest:

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css":  ["fix.css"], 
     "js":   ["script.js"] 
    } 
], 

mặc dù tôi hiểu rằng bạn không muốn làm điều đó trong trường hợp này chính xác.

+0

Nhưng tôi cần thực hiện một số việc liên quan đến biểu định kiểu này trong JavaScript, vì vậy đây không phải là giải pháp trong trường hợp của tôi. – Roman

+1

Thực ra, mã được hiển thị trong câu hỏi sẽ không tạo ra lỗi đó, ít nhất là trên bản phát hành Chrome * mới nhất * (20). Một cái gì đó còn thiếu. "Fix.css" có phải là tệp thực sự không? Nó nằm ở đâu? Liên kết tới mã mở rộng đầy đủ. Bạn đang sử dụng phiên bản Chrome nào? ... Thêm vào phần thêm vào quyền của tệp kê khai sẽ hoạt động không quan tâm (liên kết đầu tiên). Bạn đã thử điều đó chưa? –

+0

Đây là mã nguồn - [https://github.com/Tsukanov/CleanTube/tree/activation-feature](https://github.com/Tsukanov/CleanTube/tree/activation-feature). Tôi đã thử nghiệm nó trong phiên bản 20 và 22, có cùng kết quả. Và tôi không chắc chắn nên thêm gì vào tệp kê khai. – Roman

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