2009-03-04 25 views
8

Chciałbym wiedzieć, czy ktokolwiek optymalizuje swoje strony internetowe, aby zachować przyjazne zachowanie, jeśli użytkownik ma wyłączoną obsługę JavaScript. Czy istnieją jakieś sztuczki zapewniające zachowanie pseudo-skryptów w takich przypadkach? Mówię o podstawowych rzeczach, takich jak otwieranie linków w nowych oknach. Wyobrażam sobie, że wciąż jest wiele rzeczy, które można zrobić bez JavaScriptu. W niektórych przypadkach może się przydać strona, która ma kilka funkcji, z których może wrócić. Czy są jakieś praktyki?Najlepsze praktyki w zakresie wyłączonych javascript?

Edycja: dobre odpowiedzi do tej pory! Czy ludzie będą mieli przykład kodu przykładowego (chodź, HTML jest taki łatwy!), Ponieważ nie wydaje mi się, żebym widział takie pytanie na SO jeszcze.

Odpowiedz

3

Możesz użyć < noscript> tag, aby utworzyć hiperłącze, którego celem jest _blank, aby otworzyć nowe okno.

Jest również dobre dla SEO, więc wyszukiwarka taka jak Google i Yahoo! może identyfikować i indeksować Twoje linki na swoich stronach internetowych.

< noscript> może również zapewnić normalną funkcję tej przeglądarce wyłączonej przez js.

11

Co czasami robię, to ustawianie funkcji, które nie wymagają wyświetlania kodu Javascript, a następnie użycie Javascript do ich wyświetlania. W ten sposób osoby, które nie używają Javascriptu, nie zobaczą funkcji, których nie mogą używać. Następnie umieść alternatywne funkcje w tagach <noscript>.

+0

Chcesz mi powiedzieć, dlaczego mnie głosowałeś? –

4

Stackoverflow obsługuje to w przyjemny sposób. Strona jest całkowicie użyteczna bez Javascript, można zadawać pytania i odpowiadać na nie. Zaawansowane funkcje, takie jak głosowanie, nie działają.

Musisz znaleźć kompromis między czasem, który chcesz wydać, aby witryna była dostępna bez JavaScriptu i ilości funkcji, które muszą działać.

5

Do otwierania linków w nowych oknach, można użyć target = „_ blank”

<a href="http://www.google.com" target="_blank">Google</a> 

gdzie pracuję, używamy stronę docelową, aby upewnić się (do pewnego stopnia) mają mieć włączoną obsługę Javascript, zanim się do aplikacji ...

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <title>Please Wait...</title> 
    </head> 
    <body> 
    <h1>Please Wait....</h1> 
    <noscript><h1>You need a JavaScript-enabled browser to use this application!</h1></noscript> 
    <script type="text/javascript"> 
     <!-- 
     location.href = "FrontPage.aspx"; 
     // --> 
    </script> 
    </body> 
</html> 

Ponadto, często jestem zdumiony how powerful CSS can be.

0

Here's a question (and another), które mają wiele (różnych) opinii na temat budowy strony, która z wdzięcznością obsługuje wyłączoną obsługę JavaScript.

3

Podczas korzystania z Javascript, aby otworzyć okno z linkiem, można zrobić to przezroczysty, dzięki czemu będzie spadać z powrotem do oryginalnego zachowania linku jeśli Javascript jest wyłączony:

<a href="http://www.guffa.com" target="_blank" onclick="window.open(this.href,this.target,'width=900,height=700');return false;">Guffa</a> 

Jeśli Javascript jest włączony Zdarzenie onclick przechwyci kliknięcie i otworzy okno, a następnie zwróci wartość false ze zdarzenia, aby link nie był przestrzegany. Jeśli funkcja Jasvascript jest wyłączona, link zostanie zastąpiony.

+0

+1 Niektórzy mogą kwestionować otwieranie nowych okien, ale twoje rozwiązanie jest tym, które wybieram, gdy jest pożądane/wymagane. Wystarczy mieć świadomość, że użytkownik nadal kontroluje przeglądarkę i może ukryć nowe okno, otwierając adres URL w nowej karcie lub nawet w tym samym oknie. –

3

"Mogę sobie wyobrazić, że wciąż jest wiele rzeczy bez JavaScriptu" - zabawne, nie tak dawno temu zrobiliśmy wszystko, co bez javascript.

Najlepsze podejście to tak zwane "ulepszanie progresywne". Zasadą jest stworzenie czegoś, co działa bez JavaScriptu, a następnie "warstwa" na dodatkowych zachowaniach, wiążąc JavaScript z obiektami.Biblioteki takie jak jQuery czynią to prostym, ponieważ obsługują selektory w stylu CSS. W ten sposób możesz zastosować zachowania JS niemal w taki sam sposób, w jaki zastosowałbyś CSS (OK, lekka przesada).

Należy zastanowić się nad tym, co stanowi dobrą linię bazową i jak należy zmieniać strony.

Często prawdziwą dodatkową pracą jest praca po stronie serwera, gdzie konieczne może być posiadanie wielu systemów przetwarzania zgłoszeń. To trochę za duże pole do rozwiązania w jednej odpowiedzi!

Warto również zastanowić się, kto i dlaczego użytkownicy nie używają javascript. Here's something I wrote a while ago on the subject powinieneś być zainteresowany.

Przykład? Weź coś prostego, np. chcesz wyświetlać ładne "podpowiedzi" w polach formularza, gdy użytkownik do nich mówi. W HTML, mogłyby one (na przykład) jest oznaczony jako ust:

<label for="username">User name</label><input type="text" id="username" /> 
<p>Username must be between 6-8 characters</p> 

dla użytkowników bez JS, zachęty mogą po prostu być wyświetlane jako miły ust. Więc styl to z CSS. Miej dodatkowy kod CSS dla użytkowników JS, który domyślnie ukrywa akapit. A więc: 2 zestawy CSS, jeden nadpisuje drugi.

non JS:

form p { 
    margin: 10px 0 0 0; 
    border-bottom: 1px solid grey; 
} 

JS:

form p { 
    position: absolute; display: none; 
    width: 180px; 
    background-image: url(nice-bubble.gif); 
    padding: 10px; 
} 

Jak zastosować CSS do JS/Non JS sytuacjach należy do Ciebie. Istnieje wiele opcji. Osobiście lubię kodować JS w CSS i mieć w tagu wariant noscript.css (np. Działający wstecz). Który nie jest poprawny XHTML, ale działa ładnie.

Następnie należy mieć JS, który wyszukuje elementy i zarządza kodem wyświetlania podpowiedzi. np .:

$(document).ready(function() { 
    $('form input').focus(function() {...display paragraph...}); 
    // etc; 
}) 

To fałszywy kod, ale dostajesz zdjęcie. W efekcie powstaje 1 zestaw HTML z 2 prezentacjami i dodatkowymi zachowaniami oraz brak zaplątania się JS w sam HTML.

1

Ludzie wyłączający Javascript mogą również przycinać CSS, Java i inne funkcje "prezentacji", aby oszczędzać moc obliczeniową w przeglądarce o niższej mocy. (Na przykład telefon internetowy lub starszy komputer modelu). Można to nieco złagodzić, dodając do serwera prostą funkcjonalność, tak jak w czasach CGI (random intro here). W takim przypadku serwer może przekierować użytkowników innych niż JS do wersji strony GET/POST. Mogę również sprawić, by odpowiedzi były tak proste i ozdobne, jak to tylko możliwe, ponieważ możesz wyświetlać obraz na małym ekranie.

0

jQuery naprawdę pomaga. Dużo czasu z dużymi wtyczkami JavaScript (zakładki, podpowiedzi itp.) Piszesz znaczniki w bardzo semantyczny sposób.

Przykład: Klapki plug-in wymaga utworzenia zakotwiczonych div, tj

<a href="#Preferences">Preferences</a> 
<a href="#Tools">Tools</a> 
<div id="Preferences"> 
    blah 
</div> 
<div id="Tools"> 
    bar 
</div> 

to sens semantycznie, bez wtyczki na kartach, masz jakąś funkcjonalność. Kiedy masz włączone javascript i jquery-tabs, otrzymujesz naprawdę fajny, bogaty interfejs.

To tak naprawdę tylko postępowe ulepszenie, jak zauważyli niektórzy inni. Napisz semantyczny znacznik, popraw go za pomocą CSS, a potem dodaj JavaScript.Powinieneś skończyć z czymś, co działa dla każdego, nawet dla rysia.