html - 在 Safari 中使用 location.hash 滚动页面

标签 html ajax safari dhtml

我有一个论坛页面,在当前选定的消息下方显示消息的 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 曾经有一个错误,如果你将哈希值设置为相同的值两次,它会导致它重新加载页面。我猜当他们修复该错误时,他们修复得有点太彻底了,当您再次将散列设置为相同的值时,它会停止执行任何操作。

http://www.howtocreate.co.uk/safari/locationHashBug.html

最佳答案

您可以先重置它:

window.location.hash = "";
window.location.hash = "page_top";

关于html - 在 Safari 中使用 location.hash 滚动页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/549148/

相关文章:

javascript - 当使用自定义字体系列时,为什么 safari 的元素宽度与 chrome 和 firefox 报告的有很大不同?

javascript - 在页面加载时重置 Bootstrap 3 Carousel

html - 如何打印超出@page 边距的内容?

javascript - 获取网页数据作为json对象?

javascript - 版权保护

ruby-on-rails - ajaxSetup 不适用于 Rails/jquery-ujs

iOS 浏览器抛出网络钓鱼警告

php - 使 foreach 循环中的 $id 唯一

javascript - 使用基数样条的运动路径

html - 响应式和自动 CSS