2012-03-15 64 views
14

任何人都可以向我解釋這一點。我試圖使用帶有Google擴展名的content_script將一個CSS文件注入到網頁上,但是我的css文件從未被添加到網頁中。有人能告訴我我做錯了什麼,並幫助我解決它嗎?感謝我的CSS沒有通過我的內容腳本注入

清單:

{ 
    "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; 
} 

回答

31

樣式表實際上是被注入,但不適用,因爲其他樣式覆蓋的規則。要使規則起作用,您可以選擇:

  1. 增加您的CSS規則的specificity
  2. 後綴每一個規則與!important

    #test { 
        margin: 0 10px !important; 
        background: #fff !important; 
        padding: 3px !important; 
        color: #000 !important; 
    } 
    
  3. 注入通過內容腳本的CSS:

    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"] 
    } 
    

    manifest version 2處於活動狀態時,必須使用最後一個鍵web_accessible_resources,以便可以從非擴展頁面讀取CSS文件。

+3

澄清:你不**必須使用這兩種方法。使用其中之一將會很好。第一個更可靠,第二個*可能會導致閃爍。 – 2012-03-15 14:22:23

+0

謝謝,它添加在:) – user1255276 2012-03-15 14:56:51

+0

#1適合我,但#2不工作。這真的很奇怪。原始頁面是否有可能阻止擴展程序改變其風格?在一些網站上(例如,appannie.com)沒關係,但有些網站不是(例如facebook.com)。無論如何,#1是偉大的。謝謝! – 2013-09-30 08:11:01

相關問題