5

次のコードを検討してください。

hashString = window.location.hash.substring(1);
alert('Hash String = '+hashString);

次のハッシュで実行すると:

#car=町%20%26%20国

ChromeSafariでの結果は次のようになります。

車=町%20%26%20国

ただし、Firefox (Mac および PC) では次のようになります。

car=タウン&カントリー

同じコードを使用してクエリとハッシュ パラメータを解析するためです。

function parseParams(paramString) {

        var params = {};
            var e,
            a = /\+/g,  // Regex for replacing addition symbol with a space
            r = /([^&;=]+)=?([^&;]*)/g,
            d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
        q = paramString;

        while (e = r.exec(q))
           params[d(e[1])] = d(e[2]);

        return params;

    }

ここでの Firefox の特異性はそれを打ち破ります: car パラメータは、国ではなく "Town" になります。

ブラウザー間でハッシュパラメーターを解析する安全な方法、または Firefox がそれらを読み取る方法を修正する方法はありますか?


注:この問題は、Firefox の HASH パラメータの解析に限定されています。クエリ文字列を使用して同じテストを実行すると、次のようになります。

queryString = window.location.search.substring(1);
alert('Query String = '+queryString);

すべてのブラウザで次のように表示されます。

車=町%20%26%20国

4

2 に答える 2