【问题标题】:Safari ignoring/removing anchors (or "hashtags") when clicking hyperlinks?单击超链接时,Safari 会忽略/删除锚点(或“主题标签”)吗?
【发布时间】:2013-09-10 21:16:39
【问题描述】:

我需要将一个页面指向另一个页面,然后滚动到特定部分。在 Chrome 和 Firefox 中,使用像 www.example.com#section1 这样的 URL 就可以了。 (#section1 可以是锚点或元素的 id)。

但是,在 Safari 中,当我单击链接时,哈希会消失。

为什么会这样?可以在 Safari 上进行吗?如果没有,我该如何解决这个问题?

【问题讨论】:

    标签: hyperlink safari cross-browser


    【解决方案1】:

    当使用指向其他页面内部部分的超链接时,您必须记住在标签前添加斜杠 (/) 以实现跨浏览器兼容性。

    例如:www.example.com/#item-1

    并非所有浏览器都接受www.example.com#item-1(Chrome 和 Firefox 显然是这样)

    【讨论】:

    • 只是想要一些可以帮助他人的东西。我遇到了同样的问题。格式与解决方案完全相同。但是,服务器使用 mod-rewrite 来更改路径(Wordpress .htaccess)。看来,当 url 被服务器重定向时,Safari 会去除哈希值。
    • 对于看起来像http://www.example.com/foo#item-1 等目录名称的 URL,您也需要这个。 Safari 在此处重定向将丢弃该片段。您必须将它们发送到这里http://www.example.com/foo/#item-1
    【解决方案2】:

    对我来说,这与 mrbinky3000 上面所说的完全相同:服务器 mod-rewrite 正在杀死 safari 中的哈希。

    解决方案是使用完整的绝对链接,例如: http://www.example.com/path/#item-1

    【讨论】:

      【解决方案3】:

      我遇到了一个与 Safari(在 iPhone/iOS 上)相关的问题,在执行以下操作时似乎剥离了哈希/片段:

      var newHash = ...;
      window.location.replace("#" + newHash);
      

      实际上问题是一个javascript错误,只出现在Safari上。由于我无法轻松评估 iPhone 的 javascript 控制台,我选择下载旧版 Window 的 Safari(related postdownload)。

      然后,我可以使用旧版本的 Safari 在我的 Window 桌面上复制 iPhone 上的问题。那时,我发现一个javascript标签有一个缺少']'。这是一个合法的错误,但不知何故被 Chrome、Firefox 和 IE 忽略了。

      window.location.replace() 甚至没有被调用,因为代码在 javascript 错误上发生了中断。所以问题并不是 Safari 正在剥离主题标签,尽管它在多浏览器测试中是这样显示的。

      【讨论】:

        【解决方案4】:

        案例:当我更改参数时,我在 '#' 之后有参数,例如 url#myParam=123 url#myParam=789 Safari 有时会根据 myParam=123 加载上一页,

        虽然在地址栏中显示 myParam=789

        解决方案:使用 url?#myParam=123,那么 Safari 每次都会加载新页面。
        使用“?”在“#”解决我的问题之前。

        【讨论】:

        • 对我来说效果很好。谢谢
        • 对我也很好。如果我通过 301 重定向到 /sites/#config,Safari 会转到 /sites/,但是当我重定向到 /sites/?#config 时,Safari 会转到 /sites/?#config 我已经编辑了重定向功能以添加“? "如果哈希在 url 内时丢失。
        【解决方案5】:

        我刚刚遇到了这样的问题。我在 asp.net web.config 中使用了 URL 重写。使用 Safari,哈希和之后的所有内容都被删除。在尝试了上面提到的一些事情之后,我仍然遇到问题。对我来说,问题是这一切都是在 HTTPS 下发生的。一旦我在重定向中指定了完整的 URL 并包含 https:// 方案,重定向就会正常工作并保留哈希。请注意,这不是 Chrome 或 Firefox 的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-04
          • 1970-01-01
          • 2016-12-14
          • 1970-01-01
          相关资源
          最近更新 更多