Dlaczego ludzie wyłączają JavaScript?


59

Wczoraj zadałem pytanie Czy powinienem zawracać sobie głowę opracowaniem kodu JavaScript wyłączonego? . Myślę, że consencus brzmi: tak, powinienem opracować JavaScript. Teraz chcę tylko zrozumieć, dlaczego użytkownicy wyłączają JS. Wygląda na to, że wielu programistów (myślę, że ludzie, którzy odpowiedzieli na pytania są programistami) wyłącza JS. Dlaczego. Dlaczego użytkownicy wyłączają JS? Dla ochrony? Prędkość? albo co?


9
Myślę, że przyjmujesz założenia oparte na niepotwierdzonych dowodach. Faktem jest, że 99,7% użytkowników nie wyłącza JS. W rzeczywistości, gdyby naprawdę wyłączyli JS, nie odpowiedzieliby na pytanie tutaj, ponieważ ta strona nie działa bez JS.
vartec

2
Nie znam nikogo, kto wie.
kirk.burleson

6
@varted, @kirk: Znam wielu ludzi, którzy to robią, a przynajmniej częściowo. Wiele osób dbających o bezpieczeństwo zezwala na JavaScript tylko na stronach, które znajdują się na białej liście, na przykład. I wiem dużo, którzy wyłączają JS na swoim smartfonie, ponieważ często albo wart jest wyczerpanej baterii.
haylem

1
Ze względów bezpieczeństwa domyślnie mam wyłączoną obsługę JavaScript w przeglądarce Chrome, ale włączam ją dla witryn, które są tego warte. Naprawdę nie podoba mi się to, że tak wiele stron internetowych nie działa bez javascript, jest coraz więcej takich, które w ogóle nie będą działać.
Czarek Tomczak

2
@HannesKarppila Nadal mogą korzystać z plików cookie między domenami i obrazów śledzenia błędów internetowych itp. Śledzenie użytkowników działa dobrze, chyba że wyłączą javascript i pliki cookie, w którym to przypadku Internet jest dość bezużyteczny.
NickG

Odpowiedzi:


80

Jeden wyłącza JavaScript w środowisku przeglądarki z następujących powodów:

  • Szybkość i przepustowość
  • Użyteczność i dostępność
  • Wsparcie platformy
  • Bezpieczeństwo

Szybkość i przepustowość

Wiele aplikacji używa zbyt wiele skryptów JavaScript do własnych celów ... Czy potrzebujesz części interfejsu do odświeżania przez połączenia AJAX przez cały czas? Być może twój interfejs jest świetny i szybki, gdy jest używany z połączeniem szerokopasmowym, ale gdy musisz obniżyć do niższych prędkości połączenia, preferowany jest bardziej usprawniony interfejs. A wyłączenie JavaScriptu to dobry sposób na zapobieganie oszołomionym aplikacjom internetowym odświeżania świata co około 15 sekund bez powodu. (Czy kiedykolwiek spojrzałeś na ilość danych, które Facebook przesyła? To przerażające. Nie jest to jednak tylko kwestia związana z JS, ale jest jej częścią).

Mamy również tendencję do przenoszenia coraz większej ilości przetwarzania do klienta, a jeśli używasz minimalistycznego (lub po prostu przestarzałego) sprzętu, jest to boleśnie powolne.

Użyteczność i dostępność

Nie wszystkie interfejsy użytkownika powinny być wyrażane dynamicznie, a treści generowane przez serwer mogą być w wielu przypadkach całkowicie akceptowalne. Ponadto niektóre osoby po prostu nie chcą tego typu interfejsów. Nie możesz zadowolić wszystkich, ale czasami masz szansę i obowiązek zadowolenia wszystkich użytkowników.

Wreszcie, niektórzy użytkownicy są niepełnosprawni i nigdy ich nie ignorujesz !!!

Moim zdaniem najgorszym scenariuszem są tutaj rządowe strony internetowe, które próbują „zmodernizować” swoje interfejsy użytkownika, aby wydawały się bardziej przyjazne dla społeczeństwa, ale ostatecznie pozostawiają za sobą dużą część docelowej grupy odbiorców. Podobnie szkoda, gdy student uniwersytetu nie może uzyskać dostępu do treści swojego kursu: ponieważ jest niewidomy, a jego czytnik ekranu nie obsługuje strony, lub ponieważ strona jest tak ciężka i wymaga nowoczesnych wtyczek ad hoc, które nie może zainstalować na odnowionym laptopie kupionym na e-bay 2 lata temu lub ponownie, ponieważ wraca do domu do innego kraju na przerwę wiosenną, a lokalne ograniczenia przepustowości nie są w stanie poradzić sobie z ładunkiem teren.

Nie wszyscy żyją w idealnym świecie.

Wsparcie platformy

Ten punkt odnosi się do dwóch poprzednich i obecnie jest mniej istotny, ponieważ przeglądarki osadzają silniki JavaScript, które są o poziom wielkości bardziej wydajne niż kiedyś, a to staje się coraz lepsze.

Nie ma jednak gwarancji, że wszyscy Twoi użytkownicy mają przywilej korzystania z nowoczesnych przeglądarek (albo z powodu ograniczeń korporacyjnych - które zmuszają nas do wspierania przeglądarek przedpotopowych bez uzasadnionego powodu, naprawdę - lub z innych powodów, które mogą być lub nie być ważne). Jak wspomniał „Matthieu M.” w komentarzach należy pamiętać, że wiele osób nadal używa sprzętu niższej jakości i że nie wszyscy używają najnowszego i najfajniejszego smartfona. Na dzień dzisiejszy znaczna część osób korzysta z telefonów z wbudowanymi przeglądarkami z ograniczoną obsługą.

Ale, jak wspomniałem, w tej dziedzinie jest coraz lepiej. Ale nadal musisz pamiętać o poprzednich punktach dotyczących ograniczeń przepustowości, jeśli bardzo regularnie odpytujesz (lub użytkownicy będą cieszyć się ładnym rachunkiem telefonicznym).

Wszystko jest bardzo powiązane.

Bezpieczeństwo

Chociaż oczywiście można pomyśleć, że przy pomocy JavaScript nie można zrobić nic szczególnie niebezpiecznego, biorąc pod uwagę, że działa on w środowisku przeglądarki, jest to całkowicie nieprawda.

Zdajesz sobie sprawę, że kiedy odwiedzasz P.SE i SO, jesteś automatycznie logowany, jeśli zalogowałeś się w innej sieci, prawda? Jest tam trochę JS. Ten kawałek jest jednak nadal nieszkodliwy, ale wykorzystuje pewne koncepcje, które mogą zostać wykorzystane przez niektóre wrogie strony. Witryna może całkowicie wykorzystywać JavaScript do zbierania informacji o niektórych czynnościach (lub czynnościach) podczas sesji przeglądania (lub poprzednich, jeśli nie wyczyścisz danych sesji za każdym razem, gdy zamkniesz przeglądarkę lub uruchomisz teraz często używane tryby przeglądania incognito / private), a następnie wystarczy przesłać je na serwer.

Ostatnie luki w zabezpieczeniach (działające wówczas w głównych przeglądarkach) obejmowały możliwość gromadzenia zapisanych danych formularzy wejściowych (wypróbowanie kombinacji dla Ciebie na złej stronie i zapisanie sugerowanych tekstów dla każdej możliwej kombinacji liter początkowych, prawdopodobnie informując atakującego, kim jesteś , gdzie pracujesz i mieszkasz ) lub wyodrębnić historię przeglądania i zwyczaje ( bardzo sprytny hack robi coś tak prostego, jak wstrzykiwanie linków do DOM strony, aby dopasować kolor linku i sprawdzić, czy została odwiedzona . na wystarczająco dużej tabeli znanych nazw domen. A Twoja przeglądarka przyspiesza przetwarzanie JavaScript, tego typu czynności są wykonywane szybko).

Ponadto nie zapominajmy, że jeśli model bezpieczeństwa przeglądarki jest wadliwy lub odwiedzane witryny nie chronią się wystarczająco, aby uniknąć ataków XSS, wówczas można użyć JavaScript, aby po prostu skorzystać z otwartych sesji na zdalnych stronach internetowych.

JavaScript jest w większości nieszkodliwy ... jeśli używasz go w zaufanych witrynach. Gmail Facebook (może ... a nawet nie ...). Google Reader. StackExchange.

Ale tak, JavaScript nie może być taki zły, prawda? I tak są straszniejsze rzeczy, których można się obawiać w Internecie. Jak na przykład myślenie, że jesteś anonimowy, kiedy tak naprawdę nie jesteś aż taki , jak pokazano w eksperymencie EFF z Panopticlick . Które jest częściowo wykonane przy użyciu JavaScript. Możesz nawet przeczytać ich powody, aby wyłączyć JavaScript, aby uniknąć pobierania odcisków palców w przeglądarce .


Biorąc to wszystko pod uwagę, mogą istnieć idealnie dobre sytuacje, w których nie musisz się martwić o obsługę JavaScript. Ale jeśli oferujesz witrynę z usługami publicznymi, rozważ zaakceptowanie obu rodzajów klientów. Osobiście uważam, że wiele współczesnych aplikacji i stron internetowych działałoby równie dobrze, używając wcześniej wygenerowanego przez serwer modelu treści bez JavaScript w ogóle po stronie klienta, i nadal byłoby świetne i prawdopodobnie o wiele mniej pracochłonne.

Twój przebieg może się różnić w zależności od projektu.


5
Na przykład Facebook jest niesamowitym obciążeniem dla twojego procesora. Natknąłem się na strony, które były tak słabo zakodowane (lub wydawały się być), że po prostu zamroziłyby mój komputer poprzez pełne załadowanie procesora (z kilkoma otwartymi kartami).
Mark C

3
@ Mark C: Rozważam odesłanie aż 140 KB za kliknięcie „wyślij”, kiedy wpisuję komentarz, nieco przesadzone korzystanie z formularzy internetowych. Mogły być w tym czasie w konkretnych przypadkach i zostały naprawione od tego czasu (miejmy nadzieję). Przez krótki czas mieszkałem w kraju z hmmm, restrykcyjnym podejściem do cenzury internetowej i niezbyt dobrą jakością połączenia, a to sprawia, że ​​doceniasz dobre strony internetowe oparte na tekście o wiele więcej!
haylem,

8
+1 za wzmiankę o dostępności. Połowa przeklętej sieci jest dla mnie całkowicie bezużyteczna, a ja nie jestem zwykłym użytkownikiem komputera ani nie muszę (jeszcze) polegać na JAWS.
Stan Rogers

2
@Stan Rogers: to dla mnie bardzo ważne. Miałem okazję pracować z niewidomym facetem na uniwersytecie, który akurat był zarówno studentem, jak i nauczycielem, a jego umiejętności mnie zaskoczyły. Wydaje mi się to raczej smutne, że duże firmy, a nawet instytucje edukacyjne, tworzą teraz kiepskie, artystyczne strony internetowe, na których użytkownicy są pomijani.
haylem

2
+1 za dostępność. Pracuję dla witryny, która jest bardzo mocno związana z opieką zdrowotną. (Na szczęście nie bezdenna w wiadomościach) Tak wiele korzyści, jakie daje nam JS, jestem bardzo zasmucony naszymi priorytetami.
Katana314,

46

Ponieważ ufanie komuś, że każdego ranka napisze zabawny komiks i ufanie komuś, że uruchomi dowolny kod Turinga na moim komputerze, to dwie bardzo różne rzeczy.


3
+1 za zabawną analogię. Chociaż fakt, że jest to ukończenie Turinga, * nie ma nic wspólnego z niebezpieczeństwem egzekucji.
haylem

4
@haylem: Bycie Turing-complete oznacza, że ​​niemożliwe jest mechaniczne udowodnienie bezpieczeństwa w ogólnym przypadku. Cholera, nie da się nawet udowodnić, że takie podstawowe rzeczy nie działają wiecznie. W przypadku bardziej restrykcyjnego języka przeglądarka klienta może udowodnić, że skrypt nie robi czegoś niebezpiecznego.
Jörg W Mittag

22
Kompletność Turinga dotyczy wyłącznie obliczalności. Nie mówi nic o tym, czy interpretowany język może otwierać pliki, wysyłać żądania HTTP itp. Jedynym nieodłącznym niebezpieczeństwem związanym z kompletnością Turinga jest możliwość nieskończonej pętli.
dan04

@ dan04 Lub że próbuje emulować procesor x86 z systemem Windows z uruchomioną aplikacją Desktop, która jest wyświetlana w oknie przeglądarki - wszystko w JavaScript. Kompletność Turinga jest przerażająca
sinni800

@ dan04, a teraz botnety wydobywające kryptokoiny (które wymagają tylko zasobów obliczeniowych i możliwości odesłania wyników).
user253751

16

Nie jestem programistą i mam jedynie umiarkowane zrozumienie działania Internetu. To jest odpowiedź od użytkownika .

Z mojego doświadczenia wynika, że ​​wiele stron jest po prostu źle zakodowanych, czy to z powodu lenistwa, czy ignorancji: kiedy oglądałem stronę w zasadzie statyczną , taką jak strona na Facebooku, moje użycie procesora wzrosłoby o około 15% i drastycznie więcej z wieloma kartami. W końcu doszło do punktu, w którym musiałbym czekać na odpowiedź po kliknięciu przycisku lub łącza, a mój procesor przegrzałby się i zablokował.

Na wielu z tych najgorszych przestępców (witryn) nic widocznego się nie zmienia i nie dzieje się nic interaktywnego. Mogłem tylko przypuszczać, że kod witryny stale generuje nadmierne odświeżenia, ankiety i niekończące się pętle.

To zmusiło mnie do zainstalowania NoScript, aby zwolnić użycie procesora i przestać być frustrującym obowiązkiem przeglądania.

Innym cudownym dodatkiem, którego używam, jest FlashBlock .


Facebook nie zapewnia stron statycznych: używa techniki zwanej długim odpytywaniem, aby sprawdzić, czy są nowe powiadomienia, wiadomości błyskawiczne i wiadomości. Wszystkie te rzeczy wymagają JavaScript i pewnej mocy procesora.

2
@MarkTrapp Tak, dlatego powiedziałem „zasadniczo statyczny”, chociaż nie jest to ściśle statyczna strona. HyperPhysics byłby przykładem witryny ze statycznymi stronami. Zdaję sobie sprawę, że prawdopodobnie jest taka potrzeba, inaczej pudełka nigdy nie znikną i nie zobaczysz powiadomień, dopóki nie odświeżysz strony, ale : Wygląda na to, że każda witryna pomaga sobie więcej zasobów niż powinna, podobnie jak sytuacja, w której profesor lub nauczyciel oczekuje, że na pierwszym miejscu będzie praca.
Mark C

jeśli uważasz, że facebook jest statyczną stroną, nie powinieneś komentować tego pytania.
Dainius

@Dainius Wygląda na to, że mylisz żargon z angielskim i nie przestrzegasz tutaj logiki. Co to robi tutaj z tymi wszystkimi cyklami procesora? To jest problem. Może teraz jest lepiej, ale wiele z tych stron pomaga sobie w nieprzyzwoitych ilościach czasu procesora.
Mark C

Mark, nazywasz siebie webdev i pytasz, co statyczna kontra dynamiczna strona ma wspólnego z cyklami procesora? czy naprawdę uważasz, że „wyświetlenie zasadniczo statycznej strony internetowej, takiej jak strona na Facebooku” jest prawdą?
Dainius

10

Wyłączam JS ze względu na szybkość. TechCrunch bez JavaScript zajmuje kilka sekund, aby załadować z przygotowaną pamięcią podręczną. W przypadku JavaScript zajmuje to prawie 20 sekund, więcej, jeśli pamięć podręczna nie zostanie zalana.

Wiele stron zostało nadętych przez JavaScript, szczególnie galerie zdjęć i witryny handlowe. Usunięcie tego zapewnia lepszą jakość przeglądania w większości przypadków.


8

Dla mnie wszystko dotyczy bezpieczeństwa. Używam noscript, aby zezwolić niektórym stronom na uruchamianie javascript, a większość nie.

W końcu tak naprawdę nigdy nie wiadomo, na czym polega niebezpieczeństwo ( zainfekowana witryna internetowa nobel na techspot.com ). Wiele exploitów zero-day (i innych) wykorzystuje javascipt; zamknięcie tej jednej drogi ataku wydaje się krokiem we właściwym kierunku.


1
Musisz mieć nawiasy wokół czegoś, aby link mógł się uruchomić. To mi przypomina, że ​​ostatniej zimy dowiedziałem się, że Yahoo! Reklamy sportowe zostały zainfekowane jakimś złośliwym oprogramowaniem (lub mogą Cię zainfekować). Młody człowiek zarządzający siecią domową, w której mieszkaliśmy, znalazł się na czarnej liście wielu witryn z zakaźnymi reklamami.
Mark C

7

Moim głównym powodem jest to, że tłumi najbardziej irytujące reklamy. Wolałbym nie używać AdBlock Plus, ponieważ może to mieć wpływ na przychody z odwiedzanych witryn (i korzystałem z jednej lub dwóch witryn, w których warunki usługi mówiły, że nie mam wyłączać reklam). NoScript ogranicza potencjalną nieznośność reklam i jestem gotów żyć z resztą.

Jest to również kwestia bezpieczeństwa i jest to w dużej mierze związane z reklamami, ponieważ każdą witrynę sprzedającą reklamy należy uznać za potencjalnie wrogą.

Co więcej, niekoniecznie wiem, że witryna jest podejrzana, zanim ją odwiedzę. Niektórzy ludzie lubią wysyłać linki do stron i niekoniecznie są uczciwi.


Również zaufane strony mogą zawierać szkodliwe skrypty Javascript - za pośrednictwem XSS lub z powodu włamania. Przypomina się przykład strony z nagrodą Nobla.
Mnementh

4

Ponieważ przeglądarki miały powolne implementacje JavaScript, a zbyt wielu projektantów stron internetowych n00b używało go do nieistotnych rzeczy, takich jak najazd przycisków.

Na szybkiej maszynie z nowoczesną przeglądarką nikt przy zdrowych zmysłach nie wyłącza jej przez cały czas. Nie oznacza to, że nie ma wielu „świadomych bezpieczeństwa” ludzi i innych osób bez funduszy, chęci i wiedzy, aby prowadzić nowoczesną przeglądarkę na szybkim komputerze ... Dopiero niedawno IE6 przestał być najpopularniejsza przeglądarka w Internecie!


„i inni bez funduszy, chęci i know-how do prowadzenia nowoczesnej przeglądarki na szybkim komputerze”. Rozumiem i zgadzam się z częścią „fundusze”. Mogę zrozumieć część „pożądania”, choć sądzę, że zwykle bardziej chodzi o „potrzebę” jako narzuconego ograniczenia, niż odmowa posiadania przyzwoitego komputera. Ale tak naprawdę nie rozumiem części „know-how”. Jak możesz być niewykwalifikowany do tego stopnia, że ​​nie kupujesz nowego komputera? A jeśli tak, to niewłaściwie go wykorzystasz do tego stopnia, że ​​nie instalujesz dołączonej przeglądarki i używasz starszej? :)
haylem

2

Po włączeniu Javascript każda strona internetowa może wykonać kod na moim komputerze. Nie wiem nawet, czy dana witryna wykonuje kod i co robi. Co gorsza, ktoś inny może wstawić kod bez mojej wiedzy do normalnie nieszkodliwej witryny (XSS). Niedawno znany niemiecki magazyn komputerowy nie napisał artykułu, a 16-latek wypróbował witryny bankowości internetowej najpopularniejszych banków w Niemczech. Wiele z nich - w tym największa - było podatnych na atak XSS. I nawet nie zauważasz, że twoja strona bankowości internetowej wykonuje JavaScript, który zmienia na przykład cel i kwotę transakcji. Przy wyłączonym JavaScript atak XSS w kontekście zaufanej strony jest bezużyteczny, nie wykonuję złośliwego kodu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.