【问题标题】:How do I redirect to a mobile site but keep the hash tag?如何重定向到移动网站但保留井号标签?
【发布时间】:2011-12-08 19:17:59
【问题描述】:

我希望拥有它,以便当用户加载我们的页面时,它会检查他们是否在移动设备上,然后它将他们重定向到我们网站的移动版本,但保留原始哈希来自他们关注的链接的标签。我尝试在 javascript 中使用哈希标记设置新位置,它在 Chrome 中有效,但在 Safari 中无效。我读过这只是 Safari 所做的事情。有什么解决方法吗?

【问题讨论】:

  • 是的,我只是在 javascript 中设置 Window.location。结果 Safari 不支持哈希标签重定向,考虑到 iPhone 和 iPad 都是 Safari,这非常烦人。所以像window.location =“example.com/#page2”这样的一些js会带你到网站,但它不会像哈希标签所说的那样跳转到page2。 Safari 在重定向时会去除井号标签。
  • 你在哪里读到的这只是 Safari 所做的事情

标签: mobile redirect safari location hashtag


【解决方案1】:

实际上,我们刚刚从客户那里收到了一份非常相似的错误报告。

对我们而言,该场景涉及#quicklogin/abc123 形式的主题标签,并且仅在在 Safari 中查看该网站时出现。这是客户端将加载的初始 URL 的一部分,它将向它们显示一个备用登录屏幕。在 Safari 中直接访问 URL 时,浏览器会删除整个标签并忽略它。

当我们将其更改为 #quicklogin/test(或任何其他仅包含字母字符的哈希)时,它运行良好。加载网站然后分两步手动应用哈希标记时,它也能正常工作。

所以我们的结论是,在 Safari 中包含数值的主题标签可能存在问题。

【讨论】:

  • 我们对此进行了一些测试,只有小写字母有效 (a-z)。至少 =_Z 导致 Safari 删除了整个片段。
【解决方案2】:

您必须通过使用 javascript 重定向(因为 javascript 可以读取哈希值)或根据用户代理有条件地返回不同的 html 来做到这一点。

浏览器应该通过 302 保留哈希片段,但通常不会(请参阅下面的 3 岁 webkit 错误),否则哈希片段不会发送到服务器,因此无法手动处理。

https://bugs.webkit.org/show_bug.cgi?id=24175

【讨论】:

    【解决方案3】:

    你应该转义“#”符号,一切都会好起来的

    【讨论】:

    • 这与您在另一个问题上发布的其他副本没有任何意义。
    • 这确实有效...用“%23”代替“#”就像一个魅力!谢谢!
    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多