刷新页面后需要返回滚动窗口位置的方法

3
我正在使用PHP/Zend Framework和Facebook JavaScript编写一款游戏。游戏板块显示在滚动窗口中。为了查看整个游戏板块,用户必须滚动窗口。游戏的每一个步骤都会导致页面刷新,因此当用户进入下一步时,他们的滚动位置就会丢失,窗口会返回到默认位置。我想知道是否有一种自动方式,可以让滚动窗口返回到页面刷新之前的位置,这样用户就不必回到之前的位置重新滚动了。谢谢!
3个回答

3
如果你正在创建一个基于链接的游戏,我建议使用AJAX将你的点击数据发送到服务器进行处理,并在不刷新页面的情况下返回给用户。这样可以避免使用JS来滚动页面,也会使游戏对用户来说更快更有趣。

我听到你的声音,我完全同意。问题是我对AJAX非常陌生。我的应用程序中有一些AJAX代码,但是将整个应用程序编写为AJAX似乎会导致前端应用程序庞大且频繁调用后端。我熟悉在Zend Framework中组织我的应用程序,但是我不知道如何组织这样一个大型前端应用程序,因此我仍然坚持我所知道的。 - Chris Barnhill

2

在onunload(或每次滚动事件后)中将位置保存在Window.name或cookie中,然后在页面加载时滚动到该位置。
但是,Ajax解决方案是更好的方法。


我尝试了这个解决方案,但是由于我正在使用Facebook JS并且没有访问<body>标签的权限,所以无法实现onload/onunload。我找到了一个关于onload的解决方法,但是对于onunload没有。我尝试使用setInterval()来更新当前滚动位置的cookie,但是我也发现FB禁用了对cookie的访问 :(使用Ajax需要重新编写我的应用程序的大部分内容,而我根本没有时间。我考虑过使用setInterval()和ajax调用来每隔几秒钟将滚动坐标发送到后端。这听起来怎么样... - Chris Barnhill
好比每个用户每1-5秒钟都向服务器发起这些ajax调用,这样做会使服务器不堪重负。 - Chris Barnhill
真的取决于服务器...你可以在脚本标签内动态地向body添加事件,类似于:body.onload=f; //f是一个函数。当然你需要弄清楚正确的语法。 - Itay Moav -Malimovka

0

使用 <a name="game"> 并刷新到 gamePage.html#game


但这将涉及为我假定是“平铺”游戏板上的每个可点击元素添加一个锚点。那将是大量的锚点。 - BraedenP
PHP 可以在所需位置添加单个锚点。 - too much php
不,锚点应该在每次滚动事件之后创建。听起来很麻烦,而且我认为如果更改页面的URL会导致页面刷新。 - Itay Moav -Malimovka
你可以在不刷新页面的情况下重新加载页面内容,这就是 AJAX 的作用。说真的 Chris,如果你想让你的用户满意,AJAX 是唯一的选择。 ;) - BraedenP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接