Miałem zamiar opisać to na moim techblogu, ale że prowadzę go poza Joggerem, postanowiłem podzielić się tym z Wami tutaj, licząc na to, że zaraz ktoś mnie oświeci, jak pokonać i/lub zabezpieczyć się w Firefoksie przed takim kodem:
Nie klikaj, jeżeli nie jesteś pewien, że wiesz, co robisz!
Opera wyświetla w oknie komunikatu opcję, pozwalającą zablokować JavaScript. Firefox zaś radośnie się zapętla. Oczywiście, wyświetlenie komunikatu, blokuje wszystkie inne funkcje przeglądarki.
Ja wymyśliłem tylko jedno rozwiązanie: ustawiamy kursor myszy nad przyciskiem zamykania karty, zaczynamy klikać i jednocześnie naciskamy Enter. W porównaniu z Operą, takie rozwiązanie jest co najmniej żałosne.
PS Z góry uprzedzam, że komentarze nie wnoszące nic do tematu, tj. typu „Jest jedno rozwiązanie: używać Opery” będą usuwane.
W Safari nawet podane rozwiązanie nie działa — tylko Force Quit.
Chrome:
pokazuje się puste okienko z Okey`em, a potem... komunikat Chrome`a którego nie mogę już powtórzyć ale chodzi o to by "zezwól przeglądarce na niepokazywanie dziwnych okienek na tej stronie" i póki tego nie zaznaczę to mi się to okienko zapętla :)
Epiphany też uznaje tyko force quit. Ale z drugiej strony przy kolejnym uruchamianiu grzecznie pyta czy przywrócić otwarte zakładki, więc specjalnie uciążliwe to nie jest.
Działa na każdej przeglądarce która ma "nie wykonuj więcej skryptów na tej stronie", "nie pokazuj więcej okienek" czy cokolwiek w tym stylu. Czyli opera i, jak widać, wyżej wspomniany chrome :)
Midori zawiesza, tj. nie mozna nic innego zrobić. W sumie trochę głupie, że javascriptowy alert uniemożliwia robienie czegokolwiek poza daną zakładką czy nawet zamknięcie okna przeglądarki...
Konqueror to kolejna przeglądarka podatna na "atak". IE (przynajmniej w wersji 7), rzecz jasna, też do nich należy.
@Radek: Gorzej, jak w którejś z zakładek ładuje się jakiś plik/dokument/film albo znajduje się wypełniony, ale jeszcze niewysłany formularz. Na dodatek złośliwy kod prędzej czy później wymyśli się sam, jeżeli ktoś dużo pisze w JavaScripcie, a rozwiązanie problemu jest proste (Opera daje radę, Chrome też) -- dlatego ta dziura mnie tak dziwi.
przytrzymałem enter i bez problemu zamknąłem zakładkę ;)
A Epiphany cudów z enterem nie łyka. Generalnie wisi na całego. Rzeczywiście mogliby coś z tym zrobić.
A FF nie powinien po jakimś czasie wywalić komunikat z możliwością przerwania skryptu?
@BTM: Kilkadziesiąt kliknięć + parę minut czekania i nic. Zresztą to byłoby kiepskie rozwiązanie.
buah :D dobry myk :D
IE 8 nawet nie wyswietla okienka, tylko komunikuje o błędzie w lewym dolnym rogu ;)
W Maxthonie 3 bez problemu można zamknąć zakładkę pomimo okienka z alertem ;)
@konieckropka: Może nie rozumiał encji w kodzie? Przed chwilą zamieniłem encje na gołe apostrofy. Może teraz i on się będzie chciał zapętlić? ;)
Mam Firefoksa 3.5b99 z dodatkiem NoScript i po kliknięciu tego odnośnika w ogóle nie widzę żadnego komunikatu.
Grzegorz: to logiczne, skoro odnośnik jest z JS.
Ponieważ wpis cieszy się całkiem niezłą popularnością, nie mogę pozostawić Was bez rozwiązania. Rozwiązanie nie jest idealne, ale lepsze niż klikanie i ściganie się z okienkiem komunikatu. Znalazłem rozszerzenie, które dodaje do Firefoksa funkcjonalność podobną jak w Operze czy Chrome. Nie jest idealne, bo w przypadku mojego kodu na krótką chwilę zawiesza przeglądarkę (prawdopodobnie pętla nieskończona zaczyna pracować z pełną szybkością, bo nie wyświetla już okna), ale po kilku sekundach FF pyta się, czy przerwać wykonywanie skryptu i problem z głowy.
Za to na podlinkowanej w opisie rozszerzenia stronie, działa ono bezbłędnie :)
Rozwiązanie 2: NoScript
To rozwiązanie już się pojawiło ;) Ale moim zdaniem niewiele dzieli je od rozwiązania "odetnij komputer od Internetu, a najlepiej zakop w ogródku".
W Bugzilli Firefoksa wisi gdzieś zgłoszenie proponujące opcję zaprzestawania wykonywania skryptów na danej stronie - to, co Opera i inne już mają.
@radek: wręcz przeciwnie. Oglądanie strony internetowej nie powinno być zależne od żadnych javów, fjuczerów, flaszów czy innych bajerów. Jeżeli zawartości strony nie da się odczytać pod Lynxem to strona jest do pupy. Dlatego killowanie wszelkich skryptów jest jak najbardziej logicznym rozwiązaniem.
Strony internetowe to też youtube i last.fm - działa Ci to pod lynxem? Jasne, przeginać się nie powinno, o czym zdaje się młodzi webdeveloperzy zapominają, ale całkowite wyłączani JS to też przegięcie - w drugą stronę.
Pisałem o stronach informacyjnych, tudzież blogach. Jasne, że multimedialne potwory muszą mieć milion bajerów.
Zostawiam trackbacka (ręcznie), wpis pod nickiem.
// Jeśli autor uważa to za spam, to proszę śmiało kasować :)
@Adriano: Mogłeś po prostu wkleić link albo skorzystać z Textile ;)
Ale wpis ciekawy -- widzę, że nie tylko mnie poruszył ten problem. Wychodzi na to, że wspomniane rozszerzenie to najlepsze rozwiązanie. NoScript do mnie nie trafia, może za dużo aplikacji webowych i innych tego typu wynalazków używam.
Przy okazji: mój nick pisze się małą literą, choć dopuszczam i wielką, żeby nie być czepialskim ;)
2007–2009 Mariusz Chilmon, Augustów – Gdańsk
Teksty, zdjęcia i inne zasoby mojego autorstwa na tej stronie są objęte licencją Creative Commons Uznanie autorstwa-Na tych samych warunkach 2.5 Polska, o ile nie zaznaczono inaczej.
Szablon powstał przy użyciu Wolnego Oprogramowania.
Wykorzystano zestaw ikon bwpx.icns autorstwa Paula Armstronga.
Całość napędza JoggerPL.