我有一个论坛页面,在当前选定的消息下方显示消息的树形视图。当您单击树中的消息时,新的消息正文将使用 AJAX 加载到页面顶部附近的div中,然后运行以下代码:
window.location.hash = "page_top";
当然,“page_top”是页面顶部附近的锚元素,因此新加载的消息正文会滚动到视图中。
这适用于除 Safari 之外的所有浏览器。在 Safari(在 PC 和 iPhone 上测试)上,它仅在您第一次设置location.hash时有效。如果再次设置,页面不会滚动。
最终结果是新加载的消息正文不会滚动到 Safari 中的视图中,并且每次从树中选择新消息时都必须滚动回页面顶部。
为什么 Safari 不喜欢这个,我可以做些什么来解决它?
编辑:
我猜这与您可以通过谷歌搜索有关 location.hash 和 Safari 的错误有关。Safari 似乎曾经有一个错误,如果您将哈希设置为相同的值两次,它会导致它重新加载页面。我猜当他们修复了这个错误时,他们修复得有点太彻底了,当你再次将 hash 设置为相同的值时,他们停止了它做任何事情。