2009-10-21 17 views
39

Mi chiedo come sarebbe possibile scaricare un CSS da una pagina. per esempio. Nella mia pagina ho incluso un file chiamato a.css. Ora voglio che l'utente sia in grado di cambiare il tema, che è guidato dai CSS, quindi dovrebbe essere in grado di scaricare a.css e quindi caricare b.css (altrimenti entreranno in conflitto)Scarica CSS dalla pagina web

Qualsiasi idea come andare su questo?

+0

Non so come, ma il quadro ExtJS offre questo tipo di funzioni, quindi se le soluzioni qui non funzionano, si potrebbe avere uno sguardo lì .... – TheHippo

risposta

56

Prendere l'elemento di collegamento e disattivarla

document.getElementsByTagName('link')[0].disabled = true; 
+0

Hm, anche questo sembra funzionare bene. –

+0

Funziona benissimo! –

7
var firstLink = document.getElementsByTagName('link')[0]; 
firstLink.parentNode.removeChild(firstLink) 

Questo eliminerebbe il primo elemento di collegamento sulla pagina - non so come il codice HTML è strutturato ma sono sicuro che si può utilizzare come esempio. Potresti voler controllare l'attributo type se è 'text/css' e stai mirando al media giusto (schermo), o eventualmente controllare se l'href contiene 'css' ovunque se hai altri elementi di link che non sono riferimenti css .

Nota è anche possibile reimpostare l'attributo href in modo che punti a una pagina non esistente anziché rimuovere completamente l'elemento.

+0

Non è meglio utilizzare un id per il tag link? – rahul

+0

Non è raro vedere l'attributo id impostato sull'elemento link ma sono sicuro per questo scopo che l'OP vorrebbe probabilmente, meno analisi e gestione di più elementi di collegamento .. buona idea. –

+0

+1 .. pubblicato prima di me e dovrebbe essere contrassegnato come corretto. – Xinus

24

con jQuery, questo funziona:

$("link[href='fileToRemove.css']").remove(); 

Ovviamente, sostituire fileToRemove.css con il percorso relativo e il nome del file da scaricare.

+7

Ho dovuto inserire il nome del file tra virgolette per farlo funzionare, ad es. $ ("Link [= href 'test.css']") rimuovere().; – guido

+6

Se non si desidera inserire il percorso, è possibile aggiungere un * prima del segno di uguale. $ ("Link [href = * 'fileToRemove.css']") rimuovere().; – Dubbo

1

Stranamente, IE e firefox supportano l'attributo disabilitato, ma non chrome, safari o opera. Quindi, questo dovrebbe essere il più cross-browser.

// disables all styles in the document 
function unload_stylesheet(DOMelement){ 
    DOMelement.disabled = true; 
    DOMelement.parentNode.removeChild(DOMelement); 
} 
// usage 
unload_stylesheet(document.getElementsByTagName('link')[0]); 
Problemi correlati