当转到网站上的不同页面时,是否可以让setTimeout不重启?

时间:2013-01-10 22:50:21

标签: javascript cookies

如果我在我的网站标题中的脚本中有setTimeout,则可以让它继续运行,因为用户在不重新启动的情况下从一个页面到另一个页面。这是我可以用饼干做的事情吗?有什么我可以看的例子吗?

3 个答案:

答案 0 :(得分:1)

你有两个选择。

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

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

Get Parameter from javascript's location.search

  • 通过ajax加载网站内容

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

A simple AJAX website with jQuery

答案 1 :(得分:0)

使用localStorage保存状态。

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

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

答案 2 :(得分:0)

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

在每页上:

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