2009-10-21 10 views
39

Me pregunto cómo sería posible descargar un CSS de una página. p.ej. En mi página he incluido un archivo llamado a.css. Ahora quiero que el usuario pueda cambiar el tema, que es impulsado por CSS, así él/ella debería poder descargar a.css y luego puedo cargar b.css (de lo contrario entrarán en conflicto)Descargar CSS de la página web

Cualquier idea ¿Como va esto?

+0

No sé cómo, pero el marco ExtJS ofrece este tipo de funciones, por lo que si las soluciones aquí no funcionan, usted podría tener una mirada allí .... – TheHippo

Respuesta

56

Tome el elemento de enlace y desactivarlo

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

Hm, esto parece funcionar muy bien también. –

+0

¡Funciona genial! –

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

Esto eliminaría el primer elemento de enlace en la página - no estoy seguro de cómo está estructurado su html pero estoy seguro de que se puede utilizar como un ejemplo. Es posible que desee comprobar el atributo tipo si es 'text/css' y está apuntando a los medios adecuados (pantalla), o posiblemente comprobar si href contiene 'css' en cualquier lugar si tiene otros elementos de enlace que no son referencias css .

Tenga en cuenta que también puede volver a establecer el atributo href para que apunte a una página no existente en lugar de eliminar el elemento por completo.

+0

¿No es mejor utilizar una Identificación para la etiqueta de enlace – rahul

+0

Es raro ver el atributo id establecido en el elemento de enlace, pero estoy seguro de que con este objetivo exacto el OP probablemente querría, menos análisis y tratar con múltiples elementos de enlace ... buena idea. –

+0

+1 .. publicado antes que yo y debe marcarse como correcto .. – Xinus

24

con jQuery, esto funciona:

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

Obviamente, sustituir fileToRemove.css con la ruta relativa y el nombre del archivo a descargar.

+7

Tuve que poner el nombre del archivo entre comillas para que funcione, p. $ ("link [href = 'test.css']"). remove(); – guido

+6

Si no desea poner la ruta, puede agregar un * antes del signo igual. $ ("link [href * = 'fileToRemove.css']"). remove(); – Dubbo

1

Por extraño que parezca, IE y firefox son compatibles con el atributo disabled, pero no con chrome, safari u opera. Por lo tanto, este debería ser el navegador más cruzado.

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