2013-08-30 11 views
9

Io uso chrome.tabs.insertCSS(null, {file: "style.css"}); per inserire un file css nella pagina, e funziona perfettamente.Come rimuovo un file CSS iniettato?

  • Ma c'è un modo per rimuovere il file?
  • Inoltre, se si inietta un altro file denominato style.css, sostituisce il primo?
  • E a proposito, dove posso vedere i file CSS iniettati? Gli script possono essere visualizzati in "Sources/Content Scripts" (degli strumenti di sviluppo di Chrome), ma non riesco a trovare i file CSS.
+0

Ho già chiesto la terza domanda, sul perché il CSS iniettato non viene visualizzato negli strumenti dev [qui] (http://stackoverflow.com/questions/28402524/how-to-view-css-stylesheet-injected -by-a-google-chrome-extension-using-dev-tools? noredirect = 1 # comment45224324_28402524) quando mi sono imbattuto in questo. Non sembra che qualcuno abbia tentato di rispondere qui, quindi lascerò il mio così com'è. – foobarbecue

risposta

6

Non sono sicuro di quale sia il contesto di questa domanda, ma sembra che forse vogliate evidenziare determinati elementi della pagina in un determinato modo ed essere in grado di attivare quella evidenziazione personalizzata. (Piuttosto che elementi stilistici proprio interno creerebbe)

Dal momento che non si può effettivamente rimuovere il file CSS o semplicemente cancellarlo con l'aggiunta di un file con lo stesso nome, suggerisco il seguente:

  • avvolgere il vostro stili personalizzati in qualcosa come body.JMaylinCustomStyles
  • utilizzare JavaScript per aggiungere o rimuovere la classe JMaylinCustomStyles all'elemento body.
  • non v'è alcun punto 3.

I vantaggi sono che non aggiungere molto lavoro sulla parte superiore di quello che hai, che non c'è bisogno di capire come ignorare i vostri stili personalizzati in un secondo foglio di stile (è sempre molto fastidioso e soggetto a errori) e guadagna un po 'anche in CSS specificity, quindi è più probabile che i tuoi stili vengano applicati.

Nota che il modo migliore per "avvolgere" gli stili sarebbe quella di utilizzare Sass o LESS perché si può letteralmente aggiungere body.JMaylinCustomStyles { nella parte superiore del file e } in fondo.

+0

Grazie Timothée, lo farò * – JMaylin

2

Non v'è alcuna API per rimuovere il file CSS https://developer.chrome.com/extensions/tabs.html

La cosa migliore sarebbe probabilmente inserire un altro file che sostituirà tutte le impostazioni CSS dal primo file inserito.

+1

Quando provo a iniettare uno stile 'vuoto.css' non sovrascrive il precedente – JMaylin

+1

Potrebbe essere necessario sovrascrivere esplicitamente tutte le opzioni. Ad esempio se hai cambiato il colore dello sfondo in blu, dovresti riportarlo al bianco. –

+0

Questa è un'opzione. Ma nel mio caso non funziona perché non dovrei conoscere i valori predefiniti. – JMaylin

5

Ho appena incontrato lo stesso problema e ho pensato di condividere la mia soluzione. Sto chiamando uno script contenuti che poi caricare o scaricare il CSS in questo modo:

function loadCSS(file) { 
    var link = document.createElement("link"); 
    link.href = chrome.extension.getURL(file + '.css'); 
    link.id = file; 
    link.type = "text/css"; 
    link.rel = "stylesheet"; 
    document.getElementsByTagName("head")[0].appendChild(link); 
} 

function unloadCSS(file) { 
    var cssNode = document.getElementById(file); 
    cssNode && cssNode.parentNode.removeChild(cssNode); 
} 

La logica per la quale di quelli da chiamare è anche nello script contenuti, sulla base dei dati in chrome.storage. Quindi tutto ciò che devi fare è iniettare lo script e aggiungerà/rimuoverà il css.

Il mio caso è in realtà un po 'più complesso, quindi sono sempre caricato lo script del contenuto e l'invio di un messaggio per caricare o scaricare il css. Ma questo ha il sovraccarico di caricare il file su ogni caricamento della pagina.

+0

Grazie per aver condiviso David, questa è una soluzione interessante – JMaylin

+0

@JMaylin Piacere mio. L'estensione terminata è qui, il codice è grezzo quindi dovresti essere in grado di disimballare e ispezionare https://chrome.google.com/webstore/detail/skinny/lfohknefidgmanghfabkohkmlgbhmeho?utm_source=chrome-ntp-icon –

+0

Mi piace la tua estensione, ma siamo concorrenti, ecco uno dei miei https://chrome.google.com/webstore/detail/read-fast-speed-reading-e/pnffahcjemjliibgcafjpklgmbeknldi: D – JMaylin

Problemi correlati