2012-03-15 12 views
14

Qualcuno può spiegarmelo. Sto cercando di iniettare un file CSS su una pagina web utilizzando il content_script con le estensioni di Google, ma il mio file css non viene mai aggiunto alla pagina web. Qualcuno può dirmi cosa sto facendo male e aiutarmi a risolverlo? grazieIl mio CSS non viene iniettato tramite il mio script di contenuti

manifesto:

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

risposta

31

Il foglio di stile è effettivamente iniettata, ma non applicata, perché altri stili sostituiscono le regole. Per far funzionare le regole, hai alcune opzioni:

  1. Aumentare lo specificity delle regole CSS.
  2. suffisso ogni regola con !important:

    #test { 
        margin: 0 10px !important; 
        background: #fff !important; 
        padding: 3px !important; 
        color: #000 !important; 
    } 
    
  3. Iniettare CSS tramite uno script contenuto:

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

    L'ultima chiave, web_accessible_resources è necessaria quando manifest version 2 è attivo, in modo che il file CSS possa essere letto da una pagina di non estensione.

+3

Per chiarimenti: non è necessario ** utilizzare entrambi i metodi. Usarne uno andrà bene. Il primo è più affidabile, il secondo * può * causare uno sfarfallio. –

+0

Grazie per averlo aggiunto :) – user1255276

+0

# 1 funziona per me ma il # 2 non funziona. È davvero strano È possibile che la pagina originale provi a bloccare l'estensione per cambiare il suo stile? Su alcuni siti Web (ad esempio, appannie.com) va bene, ma alcuni non lo sono (ad esempio, facebook.com). Comunque, # 1 è fantastico. Grazie! –

Problemi correlati