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

发布于 2024-10-21 02:39:48 字数 499 浏览 1 评论 0原文

我有一个应用程序,它接收 # 符号后的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

方觉久 2024-10-28 02:39:48

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

  1. 你可以尝试添加另一个参数
    到令牌,以便令牌是
    的为
    #riley%2Blark%40gmail.com/%2B-a-space
    收到令牌后,检查
    令牌的第二部分。如果
    第二部分包含 %2B,
    对令牌进行 url 解码。否则将 '+' 替换为

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

I can think of two possible solutions:

  1. 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

  2. You can also try using Location.hash
    through JSNI. I reckon the results
    ought to be uniform.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文