2012-03-15 25 views
14

Bất cứ ai cũng có thể giải thích điều này cho tôi. Tôi đang cố gắng để tiêm một tập tin CSS vào một trang web bằng cách sử dụng content_script với các phần mở rộng của Google, nhưng tập tin css của tôi không bao giờ được thêm vào trang web. Ai đó có thể cho tôi biết tôi đang làm gì sai và giúp tôi sửa nó không? nhờCSS của tôi không được tiêm thông qua tập lệnh nội dung

Manifest:

{ 
    "name": "Extension", 
    "version": "0", 
    "description": "", 


    "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"], 
    "content_scripts": [ 
    { 
     "matches": [ "http://*/*", "https://*/*", "file:///*/*"], 
     "css": ["myStyles.css"], 
     "js": ["myScript.js"], 
     "all_frames": true 
    } 
    ] 
} 

myStyles.css

#test { 
    margin: 0 10px; 
    background: #fff; 
    padding: 3px; 
    color: #000; 
} 

Trả lời

31

Style sheet được thực tiêm, nhưng không được áp dụng, bởi vì phong cách khác ghi đè lên các quy tắc. Để các quy tắc hoạt động, bạn có một số tùy chọn:

  1. Tăng specificity quy tắc CSS của bạn.
  2. Suffix mọi quy tắc với !important:

    #test { 
        margin: 0 10px !important; 
        background: #fff !important; 
        padding: 3px !important; 
        color: #000 !important; 
    } 
    
  3. Tiêm CSS thông qua một kịch bản nội dung:

    myScript.js:

    var style = document.createElement('link'); 
    style.rel = 'stylesheet'; 
    style.type = 'text/css'; 
    style.href = chrome.extension.getURL('myStyles.css'); 
    (document.head||document.documentElement).appendChild(style); 
    

    manifest.json

    { 
        "name": "Extension", 
        "version": "0", 
        "description": "", 
        "manifest_version": 2, 
        "permissions": ["tabs", "http://*/*", "https://*/*", "file:///*/*"], 
        "content_scripts": [ 
        { 
         "matches": [ "http://*/*", "https://*/*", "file:///*/*"], 
         "js": ["myScript.js"], 
         "all_frames": true 
        } 
        ], 
        "web_accessible_resources": ["myStyles.css"] 
    } 
    

    Phím cuối cùng, web_accessible_resources là cần thiết khi manifest version 2 hoạt động để tệp CSS có thể được đọc từ trang không mở rộng.

+3

Để làm rõ: Bạn không ** phải sử dụng cả hai phương pháp. Sử dụng một trong số họ sẽ được sử dụng tốt. Cái đầu tiên đáng tin cậy hơn, cái thứ hai * có thể * gây nhấp nháy. –

+0

Cảm ơn đã thêm nó vào :) – user1255276

+0

# 1 làm việc cho tôi nhưng # 2 không hoạt động. Nó thực sự kỳ lạ. Có thể trang gốc cố gắng chặn tiện ích thay đổi kiểu của nó không? Trên một số trang web (ví dụ, appannie.com) nó là ok nhưng một số không (ví dụ, facebook.com). Dù sao, # 1 là tuyệt vời. Cảm ơn! –

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