我有一个应用程序在#符号后面接收网址,并使用历史记录ValueChangeHandler
回复它们。严重问题:网址在不同浏览器上的转义方式不同。
例如,当我转到#riley%2Blark%40gmail.com时,Chrome会在FireFox发送riley%2Blark%40gmail.com
时发送我的ValueChangeHandler riley+lark@gmail.com
。如果我想在它们上运行URL.decodeQueryString
,这是一个可怕的区别,因为我最终会在Firefox中留出额外的空间。
如何处理这个问题,而不是为不同的浏览器编写单独的实现?
答案 0 :(得分:1)
我可以想到两种可能的解决方案:
您可以尝试添加其他参数
到令牌,以便令牌
的
#riley%2Blark%40gmail.com/%2B-a-space
在收到令牌时,检查
令牌的第二部分。如果
第二部分包含%2B,
urldecode令牌。用'替换'+'
您也可以尝试使用Location.hash
通过JSNI。我估计结果
应该是统一的。