【问题标题】:Need a way to return scroll window position after page refresh需要一种在页面刷新后返回滚动窗口位置的方法
【发布时间】:2009-09-17 02:37:37
【问题描述】:

我正在用 PHP/Zend 框架和 Facebook JavaScript 编写游戏。游戏板显示在滚动窗口中。要查看整个游戏板,用户必须四处滚动。游戏的每一步都会导致页面刷新,因此当用户移动到另一步时,他们的滚动位置会丢失,并且窗口会返回到默认位置。我想知道是否有一种方法可以自动让滚动窗口返回到刷新页面之前的位置,这样用户就不必滚动回到原来的位置?谢谢!

【问题讨论】:

    标签: php javascript zend-framework window scroll


    【解决方案1】:

    如果您正在创建基于链接的游戏,我会使用 AJAX 将您的点击数据发送到您的服务器,对其进行处理,然后将其返回给用户,而无需刷新页面。

    这将避免您必须使用 JS 滚动页面,并且还可以让用户玩游戏更快、更愉快。

    【讨论】:

    • 我听到了,我完全同意。问题是我对 AJAX 真的很陌生。我的应用程序中有一些 AJAX 代码,但是用 AJAX 编写整个应用程序似乎会导致这个巨大的前端应用程序频繁后端调用。我熟悉在 Zend Framework 中组织我的应用程序,但我不知道如何组织这样的大型前端应用程序,因此我坚持我所知道的。
    【解决方案2】:

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

    【讨论】:

    • 我尝试了这个解决方案,但我无法让它工作,因为我使用的是 Facebook JS 并且我无权访问 标签,所以我无法实现 onload/卸载。我找到了 onload 的解决方法,但不是 onunload。我尝试使用 setInterval() 来使用当前滚动位置更新 cookie,但后来我还发现 FB 禁用了对 cookie 的访问):Ajax 将涉及重写我的大部分应用程序,而我根本没有时间。我确实考虑过使用 setInterval() 和 ajax 调用每隔几秒左右将滚动坐标发送到后端。这似乎...
    • 如果每 1-5 秒从每个用户那里获取这些 ajax 调用,就会使服务器不堪重负?
    • 真的取决于服务器...您可以在脚本标签内动态地将事件添加到正文。类似于:body.onload=f; //f 是一个函数。当然你需要弄清楚正确的语法。
    【解决方案3】:

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

    【讨论】:

    • 但这将涉及在我假设的“平铺”游戏板上的每个可点击元素上添加一个锚点。那将是一大堆锚。
    • PHP 可以在所需位置添加一个锚点。
    • No....锚应该在每个滚动事件之后创建。听起来很头疼,而且我认为您不能在不刷新页面的情况下更改页面的 url。
    • 你可以在不刷新的情况下重新加载页面的内容,这就是 AJAX 的用武之地。说真的,克里斯,如果你想让你的用户开心,AJAX 是唯一的方法。 ;)
    猜你喜欢
    • 2020-12-24
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多