我有一个论坛页面,显示当前所选消息下面的消息树视图。当您在树中点击消息中的新邮件正文中使用AJAX加载到DIV接近页面的顶部,然后将下面的代码运行:在Safari中使用location.hash滚动页面
window.location.hash = "page_top";
当然“page_top”是锚点元素靠近页面的顶部,因此新加载的消息正文会滚动到视图中。
这适用于除Safari之外的所有浏览器。在Safari上(在PC和iPhone上测试),只有在您第一次设置location.hash时才有效。如果再次设置,页面不会滚动。
最终结果是新加载的邮件正文不能在Safari中滚动到视图中,并且每次从树中选择新邮件时都必须滚动回页面的顶部。
为什么Safari不喜欢这个,有什么我可以做的,以解决它?
编辑:
我猜这是关系到你可以通过谷歌搜索有关的location.hash和Safari浏览器发现了错误。似乎Safari曾经有一个错误,如果你将哈希设置为相同的值两次,它会导致它重新加载页面。我猜测,当他们修正了这个错误时,他们把它修复得太彻底了,并且当你再次将散列值设置为相同的值时,停止它做任何事情。
http://www.howtocreate.co.uk/safari/locationHashBug.html
这不起作用,它做了一些不同的,但仍然无法正常工作。它使卷轴在每隔一段时间都处于顶端,这很奇怪。调用该代码一次两次,并且每次点击都能正常工作,但必须有比设置.hash四次更好的解决方案! – andynormancx 2009-02-14 14:12:20