Window.location.hash Вопрос в Firefox

Рассмотрим следующий код:

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

при запуске со следующими хэш:

# Car = Town% 20% 26% 20Country

Результат в Chrome и Safari будет:

Car = Town% 20% 26% 20Country

Но в Firefox (Mac и PC) будет:

Car = Town & Country

, потому что я использую тот же код, чтобы разбираться в запрос и хеш-параметрам:

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 здесь ломает: автомобиль PARAM «Город», нет страны.

Есть ли безопасный способ разбираться на парами на браузерах, или исправить, как Firefox их читает?


Примечание: Эта проблема ограничивается анализами HAHEFOX. При запусках того же теста с строками запросов:

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

Все браузеры будут показывать:

Car = Town% 20% 26% 20Country

5
задан Yarin 7 September 2011 в 17:57
поделиться