21

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

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

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

4

5 回答 5

31

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

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

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

于 2013-09-09T12:31:58.490 回答
8

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

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

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

于 2016-03-07T11:50:18.273 回答
1

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

于 2018-08-20T22:08:31.410 回答
1

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

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

真正的问题是只出现在 Safari 上的javascript 错误。由于我无法轻松评估 iPhone 的 javascript 控制台,我选择下载旧版本的 Window 的 Safari(相关帖子下载)。

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

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

于 2015-09-03T18:04:05.910 回答
0

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

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

于 2015-07-31T12:45:45.127 回答