Come UrlEncode params location.search in IE7, utilizzando JavaScript
-
18-09-2019 - |
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
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);