2013-04-05 15 views
5

Zawsze używałem metody posiadania klasy .no-js na tagu <html>, a następnie używając modernizr, który usuwa tag i zamienia go na js, jeśli JavaScript jest włączony przeglądarka użytkownika.Używanie klasy .no-js do wykrywania js

Zasadniczo zbudowałem nawigację na urządzeniach mobilnych i komputerach CSS3. Mam style, aby zmienić jego zachowanie, jeśli są przejścia CSS itd. (Sprawdzane z modernizr), a także jeśli jest js lub no-js.

Problem polega na tym, że otrzymałem flash z wersji bez js, zanim JavaScript miał czas załadować i zmienić klasę na js. (ponieważ domyślną klasą jest nie-js)

Czego nie mogę zrozumieć, to jak znaleźć poprawkę. Jeśli umieściłem specyficzny kod js jako główne klasy, to podaj inny z prefiksem .no-js miga on no-js nawet jeśli js jest włączone. Jeśli to przerzucę, robi to samo ...

Może jestem głupi, ale wszelkie wskazówki byłyby świetne.

+0

Czy opóźniasz wykonywanie skryptu do momentu zakończenia ładowania strony? Jeśli tak, nie - chcesz, aby był wykonywany przed zakończeniem renderowania strony. –

+0

Nie, skrypt jest prawie w całości wykonany z CSS. Istnieje tylko jedna mała linia jQuery. – ccdavies

+0

Jedna linia to technicznie skrypt. Jak wygląda ta linia i gdzie znajduje się na Twojej stronie? –

Odpowiedz

8

Paul Irish ma excellent blog post w sprawie rozwiązania tego problemu. Oto rozwiązanie z tego postu:

<!DOCTYPE html> 
<html lang='en' class='no-js'> 
    <head> 
     <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> 
     ... 

Najważniejsze jest, aby upewnić się, że Zaktualizowaliśmy classnames przed przeglądarce mające szansę renderowania czegokolwiek.

+0

Wygląda interesująco, dzięki za link! –

5

Możesz dodać krótki skrypt na samym szczycie <head>:

<script> 
    document.documentElement.className = 
    document.documentElement.className.replace('no-js', 'js'); 
</script> 

Również nie zapomnij o znaczniku <noscript>, która jest ignorowana, gdy jest włączona obsługa JavaScript.

Powiązane problemy