1

IE7は、JavaScriptから取得したクエリ文字列パラメーターをURLエンコードしないことに気づきました。例:

var qs = location.search;

Firefoxでは、パラメータはエンコードされています。Firefoxと同じ方法でパラメータをURLエンコードするIE固有のコードを作成するにはどうすればよいですか?

たとえば、Firefoxでは、次のクエリ文字列は次のとおりです。

?val=<script>

//gets rewritten as:

?val=%3Cscript%3E
4

2 に答える 2

3

通常、URLの一部で使用する文字列をURLエンコードする正しい関数はですencodeURIComponent。JavaScriptに固有の廃止された非標準のカスタムエンコーディングスキームである、は使用しないでください。escapeURLパラメータエンコーディングのように見えますが、プラス文字とすべての非ASCII文字の扱いが異なります。標準のURLデコーダーと組み合わせると、エラーが発生します。

ただし、または(URLには表示されないが、IEでは入力できる)のような不適切な文字が表示されている場合は、呼び出しencodeURIComponentてはいけません。これは、すでに正しくエンコードされている文字を二重にエンコードするためです。たとえば、アドレスの実数(ユーザーがサイトへの正しい形式のリンクをたどった場合から)は、に誤って変換されます。location.search<>%3C%253C

すでにエンコードされた文字をそのままにして、「安全でない」URL文字を修正することが、このencodeURI関数の目的です。それを試してください(すべてのブラウザで、スニッフィングの必要はありません)。使用されることはめったにありませんが、必要なものになる可能性があります。それ以外の場合は、煩わしいregexp-and-hex-encoding-functionの置き換えを検討しています。

于 2010-02-05T18:48:43.203 に答える
0

エスケープ機能を使用できます。

var qs = escape(location.search);
于 2010-02-05T18:38:10.697 に答える