我有一个论坛页面,在当前选定的消息下方显示消息的 TreeView 。当您单击树中的消息时,新的消息正文将使用 AJAX 加载到页面顶部附近的 div 中,然后运行以下代码:
window.location.hash = "page_top";
当然,“page_top”是页面顶部附近的 anchor 元素,因此新加载的消息正文会滚动到 View 中。
这在除 Safari 之外的所有浏览器上都能正常工作。在 Safari 上(已在 PC 和 iPhone 上测试)它仅在您第一次设置 location.hash 时有效。如果您再次设置它,页面将不会滚动。
最终结果是新加载的邮件正文不会滚动到 Safari 中的 View 中,每次从树中选择新邮件时都必须滚动回页面顶部。
为什么 Safari 不喜欢这个,我能做些什么来修复它?
编辑:
我猜这与您可以通过谷歌搜索 location.hash 和 Safari 找到的错误有关。似乎 Safari 曾经有一个错误,如果你将哈希值设置为相同的值两次,它会导致它重新加载页面。我猜当他们修复该错误时,他们修复得有点太彻底了,当您再次将散列设置为相同的值时,它会停止执行任何操作。
最佳答案
您可以先重置它:
window.location.hash = "";
window.location.hash = "page_top";
关于html - 在 Safari 中使用 location.hash 滚动页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/549148/