keemor.com - Surfin' JavaScript Wave

Konkurencja najnowszych przeglądarek: Firefox 3.5, IE 8, Chrome 3, Opera 10 i Safari 4

Pierwsza połowa tego roku przyniosła najnowsze wersje różnych przeglądarek. W końcu zaczyna być widać, że konkurencja między Firefox 3.5, IE8 i chociażby Chrome 3 przynosi efekty w postaci długo oczekiwanych zmian dla użytkowników i twórców stron.

Poza tym, że wyniki testu Acid3 są coraz lepsze, to pojawiło się parę nowych funkcjonalności, które zostały zaimplementowane przynajmniej w kilku z nich. Omówię funkcjonalności, które wpływają na prędkość ładowania stron oraz pozwalają na lepsze wykorzystanie JavaScriptu.

Proces w zakładce

Przeglądarki zaczęły rozdzielać poszczególne zakładki na osobne procesy. Skutkuje to szybszym przeglądaniem, ponieważ strony są przetwarzane równolegle w tym samym czasie. Dodatkowo, błąd na jednej zakładce nie powoduje zamknięcia całej przeglądarki, ale tylko jednego procesu.
Programiści IE 8 też dali radę to osiągnąć i tworzą dobrze widoczny proces iexplorer.exe dla każdej zakładki.

IE8 proces w zakładce

Wirtualna maszyna JavaScript

W starszych przeglądarkach szybkość wykonania kodu JavaScript w dużej mierze zależy od umiejętności programisty i jest wykonywany od razu po wczytaniu strony. Postanowiono to zmienić i w tej chwili zostały zaimplentowane silniki, które kompilując kod w przeglądarce (do kodu bajtowego) optymalizują takie elementy jak pętle, wywołania metod czy sprawdzanie typów.
Stąd wywodzi się tak duży wzrost szybkości Firefox, Safari czy Chrome.

W Operze 10 przedstawiono Presto 2.2, ale o samym przetwarzaniu JS nic nie znalazlem.

API selektorów

Pod koniec zeszłego roku W3C opracowała rekomendacje The Selectors API, która umożliwia znajdowanie elementów DOM przy pomocy znaczników CSS. To jedna z ciekawszych nowości, bo po pierwsze przy pomocy dwóch natywnych metod querySelector i querySelectorAll cały skomplikowany proces selekcji zostaje bardzo uproszczony. Tym samym silniki do selekcji elementów z popularnych bibliotek (jQuery, Prototype czy MooTools) zostaną z czasem odchudzone.

Po drugie i ważniejsze, API selektorów zostało zaimplementowane w Firefox, IE 8, Safari, Operze i Google Chrome!

XHR pomiędzy domenami

Obiekt XMLHttpRequest używany do budowania wywołań AJAXowych posiada ograniczenie z/wg bezpieczeństwa blokujące możliwość wywołań XHR tylko do obszaru domeny, w której skrypt został wywołany. W Safari 4, Firefox 3.5 oraz IE 8 została dodana obsługa nagłówka Access-Control-Allow-Origin dzięki, któremu możliwe jest odwołonie do zewnętrzych źródeł danych.

Obiekt localStorage

Obiekt localStorage jest częścią specyfikacji W3C Storage i pozwala na przechowywanie po stronie klienta par (klucz,wartość), które można obsługiwać w obrębie jednej domeny. Jest to więc nowa, ciekawa alternatywa dla znanych ciasteczek, obsługiwana przez Safari 4, Firefox 3.5 oraz IE 8.

Podsumowanie

Nowe funkcjonalności, które przedstawiłem, mogą być przydatne, ale programiści będą musieli się nauczyć je wykorzystwać, tak aby wspierać jednocześnie starsze wersje przeglądarek.