2009-10-21 19 views
39

Zastanawiam się, jak można wyładować CSS ze strony. na przykład Na mojej stronie umieściłem plik o nazwie a.css. Teraz chcę, aby użytkownik mógł zmienić motyw, który jest obsługiwany przez CSS, a więc powinien być w stanie wyładować a.css, a następnie załadować b.css (inaczej będą one w konflikcie)Wyładuj CSS ze strony internetowej

Każdy pomysł jak to zrobić?

+0

Nie wiem jak, ale ramy ExtJS oferuje tego rodzaju funkcji, więc jeśli tu rozwiązania nie działają, można spojrzeć tam .... – TheHippo

Odpowiedz

56

Take elementu łączącego i wyłączyć

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

Hm, to też działa dobrze. –

+0

Działa świetnie! –

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

To usunąć pierwszy element link na stronie - nie wiem, w jaki sposób html jest skonstruowany, ale jestem pewien, że można używać go jako przykład. Możesz chcieć sprawdzić atrybut type, jeśli jest to "text/css" i kierujesz się na właściwy nośnik (ekran), lub możesz sprawdzić, czy href zawiera "css" w dowolnym miejscu, jeśli masz inne elementy linkowe, które nie są odwołaniami css .

Uwaga: możesz także ponownie ustawić atrybut href, aby wskazywał na nieistniejącą stronę zamiast całkowicie usuwać element.

+0

Czy nie lepiej użyć id dla tagu linku? – rahul

+0

Nieczęsto zdarza się, że atrybut id jest ustawiony na elemencie link, ale jestem pewien, że w tym celu OP prawdopodobnie chciałby, mniej analizować i zajmować się wieloma elementami łącza. Dobry pomysł. –

+0

+1 .. wysłany przede mną i powinien być oznaczony jako poprawny. – Xinus

24

z jQuery, to działa:

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

Oczywiście zastąpić fileToRemove.css ze względną ścieżkę i nazwę pliku, który ma zostać rozładowane.

+7

Musiałem umieścić nazwę pliku w cudzysłowie, aby działało, np. $ ("link [href = 'test.css']"). remove(); – guido

+6

Jeśli nie chcesz wstawiać ścieżki, możesz dodać znak * przed znakiem równości. $ ("link [href * = 'fileToRemove.css']"). remove(); – Dubbo

1

Co dziwne, IE i firefox obsługują wyłączony atrybut, ale nie chrome, safari lub operę. Powinno to być najbardziej przecinarkowe.

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