Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyłączony JS w przeglądarce - co działa, co nie?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MariuszS
Witam,
Czy to normalne, że po wyłączeniu JS w przeglądarce takie rzeczy jak: document.getElementById('boldStuff2').innerHTML = userInput; działają?
To co w takim razie nie działa?
Crozin
Takie coś nie ma prawa działać po wyłączeniu obsługi JS w przeglądarce.
MariuszS
  1. <script type="text/javascript">
  2. $(window).ready(function(){
  3. function f(){
  4. alert('aaaa');
  5. document.getElementById('demo').className='hidden';
  6. }
  7. $("#c").click( function(){ f();});
  8. });
  9. </script>


  1. <div id="c">KLIK</div>
  2. <div id="demo" class="">coś</div>


To tak po krótce... I czemu z wyłączoną obsługą JS wyskakuje alert oraz zmienia się klasa? Teoretycznie nie powinno...

Np. setTimeout, setInterval przestaje działać, a to wyżej nie ohno-smiley.gif
kamil4u
Wrzuć przykład na jakiś serwer. Napisz na czym testujesz.
MariuszS
Ten kawałek kodu nie wystarczy?
http://kaizen.domenomania.pl/js.php
KLIK otwiera alert, wyłączam JS->KLIK otwiera alert. Dopiero po przeładowaniu strony KLIK nie otwiera alertu.
KLIK2 otwiera alert, wyłączam JS->KLIK2 nie otwiera alertu - nie wymaga przeładowania.
Ale jak sprawić by w takiej konfiguracji jak działa KLIK, bez przeładowania JS sie nie wykonywał?

Any idea?
kamil4u
Faktycznie tak jest. Nie mam pojęcia jak rozwiązać Twój problem. Ale z drugiej strony kto wyłącza JS akurat na Twojej stronie?
skowron-line
Wrzuć pytanie na stackoverflow niech cały świat pochyli się nad tym problemem/ciekawostką bo naprawde jest to dziwne.
Tylko nie zapomnij podać linka do tematu smile.gif
MariuszS
Akurat na tej stronie co podałem nikt nie musi wyłączać, ale ten problem doskwiera mi przy jednej ważnej rzeczy...
batman
Sprawdziłem podany przez Ciebie przykład i jest ok, tzn. po wyłączeniu js, klikanie nie powoduje pojawienie się alertów. Testowane na Fx 18.
Nasuwa mi się jedno pytanie. Czy po wyłączeniu js, odświeżyłeś stronę?
MariuszS
Nie, i właśnie o to chodzi żeby blokowało bez odświeżania strony. KLIK2 nie otwiera alertu bez przeładowania, tylko po samym wyłączeniu, a KLIK dalej otwiera... W tym cała zagadka.
MariuszS
Jeżeli jest to temat który ciężko rozwikłać to może ktoś poradzi mi od drugiej strony.

Na zdarzenie jquery .click odpalam funkcję "X" w której wykonuje się kod JS z m. in. setInterval wewnątrz, jeżeli ktoś wyłączy JS w przeglądarce i wywoła .click'a to funkcja się wykona ale "oleje" setInterval wykonując resztę instrukcji (co się nie może zdarzyć w moim przypadku bo zaburzy to działanie skryptu).
Chcę zrobić by po wyłączeniu JS w przeglądarce, po wywołaniu .click funkcja "X" się w ogóle nie wykonywała, tzn. może się wykonać ale bez kodu w środku.

Próbowałem to obejść właśnie w ten sposób:
- w kodzie html wstawiłem diva z class=0,
- na początku funkcji "X" sprawdzam if'em za pomocą jquery czy class=0
- jeżeli tak to ustawiam za pomocą jquery class=1, wykonuje kod funckji "X" a na koniec ustawiam za pomocą JS (document.getElementById) class=0,
- i znowu po wywołaniu f "X" sprawdzam czy class=0.

Liczyłem, że jeżeli ktoś wyłączy JS w przeglądarce to na końcu funkcji "X" nie ustawi się class=0 i przy następnej próbie wywołania funkcji "X" kod się nie wykona.

Rozwiązanie (moim zdaniem) w teorii dobre, ale jak widać w praktyce zawiodło bo JS pomimo wyłączenia, działa.

PS. Oczywiście wszystko bez przeładowania!
!*!
Cytat(MariuszS @ 11.01.2013, 17:48:53 ) *
Czy to normalne, że po wyłączeniu JS w przeglądarce takie rzeczy jak: document.getElementById('boldStuff2').innerHTML = userInput; działają?

Nie i jest to błąd przeglądarki (zgłoś to). Sprawdziłem na Operze/Fx i nawet bez przeładowania strony JS nie działa.
A powód jest logiczny, przeglądarka po wyłączeniu JS stosuje się do tego dopiero po ponownym załadowaniu strony. Nie musisz się tym martwić bo jest to błąd przeglądarki a nie Twój.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.