我有一个使用Ruby on Rails HTML,CSS和JS构建的Web应用程序。该网站有一个秒表,即使用户不在该网站上,我也希望它能够继续运行。 例如,用户将手机放在网站上,启动秒表(由JS构建),然后离开浏览器,继续使用手机的其他应用程序,然后当他返回时,他应该看到已经过去了多少时间因为他们开始了秒表。
而且,即使他们关闭浏览器(虽然不是选项卡),也可以保持其运行吗?
答案 0 :(得分:0)
您在这里有一些选择。
您可以将start_at时间存储在cookie中,然后读取它并根据该时间设置计时器。
class TimersController
def create
cookies[:started_at] = Time.now
end
def show
cookies[:started_at]
end
end
这是实现它的最简单方法。当然,如果用户在浏览器中删除cookie或使用其他设备,计时器将重置。
https://api.rubyonrails.org/v5.1.7/classes/ActionDispatch/Cookies.html
这是一个更复杂但也不易出错的解决方案。您可以在计时器启动时将信息存储在后端的数据库中。
要将计时器与启动时间关联,您需要在数据库中创建一个具有id或哈希值的记录。
class TimersController
def create
Timer.create(started_at: Time.now)
end
def show
@timer = Timer.find(params[:id])
end
end
然后显示计时器的网址将类似于timers/1
或timers/abc
。
一种更复杂的解决方案还可以通过用户ID来获取计时器,但随后还需要进行用户身份验证等。
在这两种解决方案中,当用户回到标签页时,您都需要使用JS刷新页面。