ugrás a tartalomhoz

Az escape()/unescape() nem alkalmas URL manipulációra többé

Hojtsy Gábor · 2004. Május. 16. (V), 14.31
Egy aktuális feladat megoldása során derült fény erre a változásra, ami véleményem szerint sokakat érinthet, konkrétan azokat, akik a címben említett JavaScript függvényeket használják korrekt URL-ek összeállításához. A Mozilla alapú böngészők tavaly december óta megjelent változatai ugyanis módosítottak az escape() működésén, az IE pedig 5.5-ös verzió óta generál új formájú kódolt URL-eket.

Az UTF-beli karaktereket az %unnnn szerkezetű kódolást alkalmazva küldik tovább, ami ugyan kompatibilis az ECMAScript világszabvánnyal, de az URL kódolás RFC 2279-es leírásával nem. Ahhoz ugyanis a két bájton ábrázolt UTF karaktereket két külön kóddal kellene továbbítani %nn%nn formában (ahol n mindenütt egy hexa számjegyet jelöl). Ennek megoldásához bevezették az encodeURIComponent() és decodeURIComponent() párost, amivel a helyes URL kódolást el lehet érni. Ezzel már csak annyi a gond, hogy a korábbi böngészőkben így JavaScript kódunk nem lesz futtatható. Erre nyújt megoldást Tim Powell (a forráskódban látható a szükséges JavaScript kód).