Safari在点击超链接时忽略/删除锚点(或“hashtags”)?

时间:2013-09-06 17:32:37

标签: hyperlink safari cross-browser

我需要将一个页面指向另一个页面然后滚动到特定部分。在Chrome和Firefox中,使用www.example.com#section1之类的网址可以解决问题。 (#section1可以是锚点或元素的id)。

然而,在Safari中,当我点击链接时哈希消失了。

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

5 个答案:

答案 0 :(得分:23)

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

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

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

答案 1 :(得分:5)

案例:我在'#'之后有参数,比如url#myParam = 123,当我更改params时 url#myParam = 789 Safari有时根据myParam = 123,

加载上一页

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

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

答案 2 :(得分:0)

对我来说,这是完全相同的问题,如mrbinky3000上面所述:服务器mod-rewrite在safari中杀死了哈希。

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

答案 3 :(得分:0)

我遇到了Safari(在iPhone / iOS上)的相关问题,在执行操作时似乎剥离了散列/片段:

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

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

然后,我可以使用旧版本的Safari在我的Window桌面上的iPhone上复制问题。那时,我发现一个javascript标签有缺少&#39;]&#39; 。这是一个合法的错误,但它在某种程度上被Chrome,Firefox和IE忽略了。

window.location.replace()甚至没有被调用,因为代码突然出现了javascript错误。所以问题并不是Safari正在剥离主题标签,即使它出现在多浏览器测试中。

答案 4 :(得分:0)

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