Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak Javascriptem wykryć wyłączenie stylów?
#1
Jak w temacie. Szukałem w Google. Nic. Próbowałem pośrednio: ustawić stylami wartość jakiegoś atrybutu, a jednocześnie skryptem sprawdzać czy jest ustawiony na tę wartość, gdy w przeglądarce style są wyłączone. Także nic z tego. Macie jakieś pomysły?
Odpowiedz
#2
http://www.howtocreate.co.uk/tutorials/javascript/domstylesheets
1 kod na stronie

Zawsze też możesz np stylami ustawić spanowi jakieś with czy coś i sprawdzić je za pomocą JS Big Grin
Odpowiedz
#3
Dziękuję Kartofelku za odzew, ale własność styleSheets zwraca listę obiektów stylesheet w dokumencie. Zatem warunek:
Kod:
if (document.styleSheets)
powinien być spełniony tylko wtedy, gdy w dokumencie są określone jakieś niedomyślne style. Tymczasem kod:
Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
function czy() {
if (document.styleSheets) {
alert('Style.');
}
else {
alert('Brak stylów.');
}
}
//]]>
</script>
</head>
<body>
<button onclick="czy()">Style</button>
</body>
</html>
, w którym nie określono żadnych stylów, daje alert "Style", a nie "Brak stylów". Możliwe, że dlatego, że każda przeglądarka jakieś domyślne style sama określa. I dodam, że alert "Style" ukazuje się niezależnie od tego, czy w przeglądarce w zakładce Widok itd. włączę obsługę stylów czy nie. Wydaje mi się, że nie tędy droga.
Sięgnąłem po navigator.preference. Niestety kod
Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
function czy() {
var test = navigator.preference("browser.enable_style_sheets");
alert(test);
}
//]]>
</script>
</head>
<body>
<button onclick="czy()">Style</button>
</body>
</html>
nie działa. Dlaczego?
Dodam, że ustawianie stylu jakiemuś obiektowi, a potem sprawdzanie javascriptem, czy obiekt ma ten styl, nic nie daje, bo javascript odpowiada, że styl jest, mimo że w przeglądarce style są wyłączone.
Odpowiedz
#4
W sumie nie sprawdzałem działania tych metod. A czy coś takiego działa?

Kod:
if (document.styleSheets.length) {
   alert('jest ok');
} else {
    alert('nima');
}

Bo to w sumie jest kolekcja więc raczej powinieneś sprawdzić jej długość
Odpowiedz
#5
Kartofelku - przykro mi, także nie działa. Sprawdziłem, ale nie zdziwiłem się, że nie działa. Bo przecież document.styleSheets zwraca listę obiektów stylesheet w dokumencie, a to nie ma związku ze stylami w przeglądarce. Ale dodanie length poprawiło sytuację o tyle, że kod z:
Kod:
if (document.styleSheets.length)
prawidłowo pokazuje czy w dokumencie są określone style czy nie. Ściśle - czy są określone w sekcji head. Bo jeśli są w body przy znacznikach style="coś tam", to nie wchodzą do zliczanej kolekcji.
Zatem wracam to pytania, dlaczego kod z navigator.preference .... nie działa? A może należy szukać zupełnie innego rozwiązania?
Problem wydaje mi się o tyle istotny, że chcąc nie po amatorsku tworzyć strony, należałoby zabezpieczać się przed wyłączaniem stylów przez użytkownika (podobnie jak przed wyłączaniem JavaScriptu) i przynajmniej informować go - co i dlaczego jest zniekształcone lub niewidoczne na ekranie, jeśli wyłączy style. Np. jeśli osadzę playera flashowego przy pomocy object, to wyłączenie stylów w przeglądarce powoduje znikanie object. Nawet zwykłe <img src="cos_tam.jpg" width="400" height="300" alt=""/> w Fx traci wprowadzone wymiary obrazka tj. obrazek wraca do pierwotnych wymiarów (w IE ta przypadłość nie występuje).
Podejrzewam, że
Kod:
navigator.preference("browser.enable_style_sheets")
działa tylko w najnowszych wersjach przeglądarek. Jednak, aby ustalać poprzez testy czy w tym tkwi problem, najpierw należy ustalić prawidłowy kod. Bo może zawiera jakiś błąd?
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wyłączenie cienii w IE muchmorek 5 3,632 17-05-2012, 03:53
Ostatni post: muchmorek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl