Domanda

Ho notato che IE7 non parametri querystring recuperati da JavaScript Encode URL-, per esempio:

var qs = location.search;

In Firefox, i parametri sono codificati. Come posso scrivere codice IE-specifici per la codifica URL i parametri nello stesso modo come FireFox?

Per esempio, in Firefox, questo querystring:

?val=<script>

//gets rewritten as:

?val=%3Cscript%3E
È stato utile?

Soluzione

Normalmente, la funzione corretta codifica URL una stringa per l'uso in parte di un URL è encodeURIComponent. Non uso escape, che è uno schema obsoleto non-standard di codifica personalizzata unica per JavaScript. Sembra URL-parametro-encoding, ma tratta vantaggi e tutti i caratteri non ASCII in modo diverso. Mettere insieme con un decoder URL standard e si ottiene errori.

Tuttavia, non si dovrebbe chiamare encodeURIComponent sopra location.search se ti sta dando caratteri male come < o > (che non dovrebbe apparire in un URL, ma che IE consente di inserire), perché sarà caratteri a doppio codificare che sono già codificati correttamente; per esempio una vera e propria %3C l'indirizzo (da se l'utente ha seguito un correttamente Link -formed al vostro sito) otterrà mis-convertito %253C.

Risoluzione up ‘non sicuri’ caratteri URL pur lasciando solo personaggi già codificati è ciò che la funzione encodeURI è per; provare che (su tutti i browser, senza bisogno di sniffing). E 'usato raramente, ma potrebbe essere quello che ti serve. In caso contrario, si sta guardando un sostituto regexp-e hex-codifica-funzione-fastidioso.

Altri suggerimenti

È possibile utilizzare il rel="nofollow sfuggire funzione:

var qs = escape(location.search);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top