我需要将一个页面指向另一个页面然后滚动到特定部分。在Chrome和Firefox中,使用www.example.com#section1
之类的网址可以解决问题。 (#section1可以是锚点或元素的id)。
然而,在Safari中,当我点击链接时哈希消失了。
为什么会这样?可以在Safari上进行吗?如果没有,我该如何解决这个问题?
答案 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 post,download)。
然后,我可以使用旧版本的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无关。