Noutati despre interfete web si interfete evoluate

marți, 23 decembrie 2008

Tema 3 nu e chiar simpla :)


Anu' trecut, cu ceva intarziere, am facut si eu tema 3. Nu a fost grea, insa e foarte amuzant ca pare simpla, dar creeaza niste probleme destul de mari. Acuma, nah, evident, puteai sa alegi sa te lupti cu aceste probleme sau sa sari peste ele. M-am uitat si pe la alti colegi ca sa vad cum au rezolvat si... se pare ca s-au dus pe varianta usoara...

Pe scurt, tema 3 cere sa se realizeze un mic script Javascript care sa permita evidentierea unor cuvinte intr-o pagina data, care se afla la aceeasi locatie ca si fisierul curent. Scurt si la obiect. Pe deasupra, se mai da ca exemplu si utilizarea optiunii de afisare din cache pe care o ofera motorul de cautare Google. Evident, ca un mic bonus se cere sa se utilizeze AJAX.

Insa, de aici incep problemele. Io am alex AJAX. Fix in acest moment am dat cu capul de perete. Motivul il reprezinta restrictiile de securitate impuse de browser-ele din zilele noastre. Mai exact, browser-ele nu prea permit incarcarea fisierelor locale prin intermediul unor scripturi locale. Evident, logica e simple: se incearca evitarea cazurilor de acces neautorizat.

Varianta mea de rezolvare a temei 3 poate fi gasita pe site-ul nostru, http://www.interfete-evoluate.eu/ .

Problema cea mai mare este cauzata de faptul ca browserele permit incarcarea prin Javascript doar a fisierelor care sunt in acelasi domeniu de securitate cu fisierul initial. Mai exact, un script de pe site-ul http://www.microsoft.com/ poate incarca doar un alt script/fisier care se afla pe acelasi site. Ca o situatie particulara, fisierele locale pot incarca alte fisiere locale doar cu acordul utilizatorului (in Firefox) sau nu pot incarca deloc alte fisiere locale (Internel Explorer).

Detalii despre aceste restrictii de securitate in Internet Explorer 7 pot fi gasit la adresa: http://msdn.microsoft.com/en-us/library/ms537505(VS.85).aspx

Pentru a rezolvat problema in Firefox 3, solutia e relativ simpla: adaugati un apel ca cel de mai jos, care informeaza browser-ul ca sunt necesare drepturi suplimentare (la randul sau, browser-ul va cere utilizatorului sa confirme faptul ca doreste sa acorde aceste drepturi):

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead UniversalFileRead");

Ionut

0 comentarii:

Arhivă blog