¿Hay alguna manera de eliminar dinámicamente la hoja de estilo actual de la página?
Por ejemplo, si una página contiene:
<link rel="stylesheet" type="text/css" href="http://..." />... ¿hay alguna forma de deshabilitarlo más tarde con JavaScript? Puntos extra por usar jQuery.
Bueno, suponiendo que pueda apuntarlo con jQuery, debería ser tan simple como llamar a remove() en el elemento:
$('link[rel=stylesheet]').remove();Eso eliminará todas las hojas de estilo externas en la página. Si conoce parte de la URL, puede eliminar solo la que está buscando:
$('link[rel=stylesheet][href~="foo.com"]').remove();Y en Javascript
este es un ejemplo de eliminar todo con el selector de consultas y la matriz foreach
Array.prototype.forEach.call(document.querySelectorAll('link[rel=stylesheet]'), function(element){ try{ element.parentNode.removeChild(element); }catch(err){} }); //or this is similar var elements = document.querySelectorAll('link[rel=stylesheet]'); for(var i=0;i<elements.length;i++){ elements[i].parentNode.removeChild(elements[i]); }Si conoce el ID de la hoja de estilo, utilice lo siguiente. Cualquier otro método para obtener la hoja de estilo también funciona, por supuesto. Esto es DOM directo y no requiere el uso de ninguna biblioteca.
var sheet = document.getElementById(styleSheetId); sheet.disabled = true; sheet.parentNode.removeChild(sheet);Encontré esta página mientras buscaba una forma de eliminar hojas de estilo usando jquery. Pensé que había encontrado la respuesta correcta cuando leí lo siguiente
Si conoce parte de la URL, puede eliminar solo la que está buscando:
$('link[rel=stylesheet][href~="foo.com"]').remove();"
Me gustó esta solución porque las hojas de estilo que quería eliminar tenían el mismo nombre pero estaban en carpetas diferentes. Sin embargo, este código no funcionó, así que cambié el operador a *= y funciona perfectamente:
$('link[rel=stylesheet][href*="mystyle"]').remove();Solo pensé en compartir esto en caso de que sea útil para alguien.