0

如果我在网站标题的脚本中设置了 setTimeout,则可以让它在用户从一个页面转到另一个页面时继续运行而无需重新启动。这是我可以使用 cookie 来做的事情吗?有什么我可以看的例子吗?

4

3 回答 3

1

你有两个选择。

  • 将 GET 查询添加到 URL 字符串。这看起来像 www.ex.com/index.html?time=300024

您将捕获所有锚标记的点击,如果它指向您自己的网站,它会将 ?time=${time} 附加到 url。然后,在下一页,在初始化计时器时,在 location.search 中分离出时间在下一页。请注意,此方法不会保持准确的时间,因为在加载页面和 DOM 时会有延迟。

从 javascript 的 location.search 获取参数

  • 通过ajax加载网站内容

这样,您将完全重新设计您的网站,以便任何指向您网站内部部分的链接实际上都将使用 AJAX 来查询新内容。这意味着您永远不会更改页面本身,并且永远不会卸载 javascript 超时。这不是最推荐的做法。这是一个基本示例:

一个简单的带有 jQ​​uery 的 AJAX 网站

于 2013-01-10T23:00:32.813 回答
0

使用 localStorage 保存状态。

设置您的常规 setTimeout。当它启动时,让它从 localStorage 加载它需要的任何状态数据。每当它更新数据时,它应该将其保存回 localStorage 以保持持久性。

如果您需要有关如何执行此操作的具体细节,请留下您的问题的评论,我会尽力回答。

于 2013-01-11T00:00:31.333 回答
0

使用会话 cookie 来保存您希望 setTimeout 代码执行的时间。

在每一页上:

  • 检查 cookie 是否有值。如果没有,请将其设置为类似Date.now() + delayValue,其中 delayValue 是等待多长时间(以毫秒为单位)。
  • 检查cookieValue - Date.now()-- 如果 > 0,将其用作您的 setTimeout 计时器值。如果 <= 0,您的计时器功能应该已经运行
于 2013-01-11T00:24:35.833 回答