Pracując przy projekcie w którym kod javascriptowy jest docelowo pisany pod platformy mobilne lub np. ma być wykorzystany w QML-u, nie przejmuję sie restrykcjami np. przy tworzeniu komunikacji ajaxowej ze względu na to że aplikacje uruchamiane są na urządzeniach jako ‘natywne’ i nie zakłócają ‘same origin policy’. Przy takim dewelopmencie komunikacje czy nawet aplikacje najszybciej można przetestować było korzystając z Firefoxa włączając do kodu prosty skrypcik
var xmlHttp = new XMLHttpRequest();
/*
* ustawiamy uprawnienia zeby mozna bylo odwolywac sie do innej domeny,
* lub odpalajac komunikacje z lokalnego pliku
*/
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
//wazne zeby open byl zaraz po ustawieniu uprawnien
xmlHttp.open('get,'http://dowolnadomena.com');
Firefox pyta wtedy urzytkownika o zgodę na połączenie do domeny i można było spokojnie testować aplikacje dopóki… nie pojawił się Firefox 5
.
Mozilla począwszy od Firefox-a 5 w górę wyłączyła funkcjonalność ‘enablePrivilege’. W tym momencie jedyną opcją żeby dewelopować czy testować taki scenariusz korzystając z Firefoxa 5+ mozna:
stworzyć własny plugin który dostarcza taką możliwość lub przewertować MDN i bugzille mozilli
i dotrzeć do tego linku https://bugzilla.mozilla.org/attachment.cgi?id=545203
(z wątku bug-a zgłoszonego w powyższej sprawie), gdzie znajduje się Special Powers w formie pluginu dla Firefoxa.
Special Powers jest to zestaw API który normalnie jest częscią Mochitest – frameworka do testów automatycznych używanych do testowania build-ów firefox-a oraz potencjalnych zagrożeń związanych z wykorzystaniem javascriptu czyli wszędzie tam gdzie chcemy żeby nasz skrypt mógł robić to czego nie pownien
. Po zainstalowaniu plugina zobaczymy że pojawi się globalny obiekt SpecialPowers. Teraz możemy zmodyfikować powyższy przykład:
//korzystamy z super mocy ^^
var xmlHttp = SpecialPowers.createSystemXHR();
xmlHttp.open('get,'http://dowolnadomena.com');
i stworzyć obiek xmlHttpRequest który posiada uprawnienia łączenia się z innymi domenami.
Warto wiedzieć że Special Powers to nie tylko komunikacja ajax kompletną liste ‘super mocy’ znajdziecie tutaj.






Kiedy dawno temu zaczynałem swoją przygodę frontendową i wychodziłem ze świadka javowego Aptana (pokłosie Eclipsa) była dla mnie naturalnym wyborem. Wiem, wiem pracując na Macu powinienem skorzystać z czegoś co jest bardziej “sexy”, ale szczerze powiedziawszy nie miałem ochoty na przestawianie się i poszukiwania. Dodatkowym plusem było to, że Aptana jest za darmo. Co najbardziej mi doskwierało? Przede wszystkim szybkość działania samego IDE jak i przeszukiwania projektów, słabe podpowiadanie składni (w porównaniu do Javy z Eclipsem) i brak dobrze przemyślanego UX-a.