Обработка различий между строками, возвращенными в обработчике изменения истории - PullRequest
0 голосов
/ 11 марта 2011

У меня есть приложение, которое получает URL-адреса после знака # и отвечает на них историей ValueChangeHandler.Серьезная проблема: URL-адреса экранируются по-разному в разных браузерах.

Например, когда я захожу на # riley% 2Blark% 40gmail.com, Chrome отправляет мой ValueChangeHandler riley%2Blark%40gmail.com, а FireFox отправляет riley+lark@gmail.com.Это ужасная разница, если я хочу запустить URL.decodeQueryString на них, потому что у меня останется дополнительный пробел в Firefox.

Как я могу справиться с этим, если не писать отдельные реализации для разных браузеров?

1 Ответ

1 голос
/ 11 марта 2011

Я могу придумать два возможных решения:

  1. Вы можете попробовать добавить другой параметр к токену, чтобы токен был для #riley%2Blark%40gmail.com/%2B-a-space при получении токена проверьте вторая часть токена. Если вторая часть содержит% 2B, urldecode токен. иначе заменить «+» на

  2. Вы также можете попробовать использовать Location.hash через JSNI. Я считаю результаты должен быть равномерным.

...