处理历史更改处理程序中返回的字符串之间的差异
我有一个应用程序,它接收 # 符号后的 url,并使用 History ValueChangeHandler
响应它们。严重问题:不同浏览器上的 url 转义方式不同。
例如,当我访问 #riley%2Blark%40gmail.com 时,Chrome 会发送我的 ValueChangeHandler riley%2Blark%40gmail.com
,而 FireFox 会发送 [电子邮件受保护]
。如果我想在它们上运行 URL.decodeQueryString
,这是一个可怕的差异,因为我最终会在 Firefox 中得到额外的空间。
如果没有为不同的浏览器编写单独的实现,我该如何处理这个问题?
I've got an app that receives urls after the # sign and responds to them with a History ValueChangeHandler
. Serious problem: the urls are escaped differently on different browsers.
For example, when I go to #riley%2Blark%40gmail.com, Chrome sends my ValueChangeHandler riley%2Blark%40gmail.com
while FireFox sends [email protected]
. This is a terrible difference if I want to run URL.decodeQueryString
on them because I'll end up with an extra space in Firefox.
How can I handle this, short of writing separate implementations for different browsers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可以想到两种可能的解决方案:
你可以尝试添加另一个参数
到令牌,以便令牌是
的为
#riley%2Blark%40gmail.com/%2B-a-space
收到令牌后,检查
令牌的第二部分。如果
第二部分包含 %2B,
对令牌进行 url 解码。否则将 '+' 替换为
您还可以尝试使用
Location.hash
通过 JSNI。我算一下结果
应该是统一的。
I can think of two possible solutions:
U could try adding another parameter
to the token so that the token was
of the for
#riley%2Blark%40gmail.com/%2B-a-space
on receiving the token, check the
second part of the token. If the
second part contains a %2B,
urldecode the token. else replace '+' with
You can also try using
Location.hash
through JSNI. I reckon the results
ought to be uniform.