0

我有一个应用程序在 # 符号之后接收 url 并用 History 响应它们ValueChangeHandler。严重的问题:在不同的浏览器上,url 的转义方式不同。

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

如果不为不同的浏览器编写单独的实现,我该如何处理?

4

1 回答 1

1

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

  1. 您可以尝试向令牌添加另一个参数,以便令牌 #riley%2Blark%40gmail.com/%2B-a-space 在接收令牌时属于,检查令牌的第二部分。如果第二部分包含 %2B,则对令牌进行 urldecode。否则将“+”替换为

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

于 2011-03-11T06:47:53.087 回答