处理历史更改处理程序中返回的字符串之间

时间:2011-03-11 00:58:32

标签: firefox gwt google-chrome urldecode

我有一个应用程序在#符号后面接收网址,并使用历史记录ValueChangeHandler回复它们。严重问题:网址在不同浏览器上的转义方式不同。

例如,当我转到#riley%2Blark%40gmail.com时,Chrome会在FireFox发送riley%2Blark%40gmail.com时发送我的ValueChangeHandler riley+lark@gmail.com。如果我想在它们上运行URL.decodeQueryString,这是一个可怕的区别,因为我最终会在Firefox中留出额外的空间。

如何处理这个问题,而不是为不同的浏览器编写单独的实现?

1 个答案:

答案 0 :(得分:1)

我可以想到两种可能的解决方案:

  1. 您可以尝试添加其他参数 到令牌,以便令牌 的 #riley%2Blark%40gmail.com/%2B-a-space 在收到令牌时,检查 令牌的第二部分。如果 第二部分包含%2B, urldecode令牌。用'替换'+'

  2. 您也可以尝试使用Location.hash 通过JSNI。我估计结果 应该是统一的。