假设我有一个计时器将通过用户单击一个按钮来激活,我如何在用户关闭浏览器之前保存数据(当前计时器状态和数据)并在用户访问同一页面后恢复计时器,考虑到经过两次会议之间的时间。
我的开发基于 ASP.NET MVC4,而且我主要使用 ajax 调用来服务用户交互。
我正在考虑是否有一种方法可以通过服务器端代码控制这种交互和要求,但我对此持怀疑态度。
你有什么想法?
假设我有一个计时器将通过用户单击一个按钮来激活,我如何在用户关闭浏览器之前保存数据(当前计时器状态和数据)并在用户访问同一页面后恢复计时器,考虑到经过两次会议之间的时间。
我的开发基于 ASP.NET MVC4,而且我主要使用 ajax 调用来服务用户交互。
我正在考虑是否有一种方法可以通过服务器端代码控制这种交互和要求,但我对此持怀疑态度。
你有什么想法?
可以通过使用 cookie 在客户端完成全部操作。
这是流程:
我将尝试使用更多代码示例尽快更新这篇文章。
更新
var timeLeft= $.cookies('timeLeft') || ORIGINAL_VALUE;
var timer = setTimeout(myFunc, timeLeft);
$(window).unload(function(){
var timeLeftToSave = getTimeLeft(timer);
$.cookies('timeLeft', timeLeftToSave, { path: '/' });
})
//Use code from the second link here
function getTimeLeft(timer){
}
function myFunc(){/*YOUR CODE HERE*/}
您可以尝试使用事件的当前值创建一个 cookie,unload
然后在您再次启动计时器时进行检查?
$(window).unload(function() {
// Set a cookie with current timer value
});
在此处查看有关在 Javascript 中设置 cookie 的信息。
我建议编写一些客户端Javascript
来检测onunload
和onbeforeunload
事件,并将计时器的值存储在用户浏览器的本地存储中。
对于处理本地存储,我建议使用一个优秀的库:LawnchairJS。从相关文档:
默认情况下,Lawnchair 将持续使用 DOM 存储,但如果其他适配器可用并且当前执行的 JavaScript 运行时不支持 DOM 存储。Lawnchair 将尝试每个连续的适配器,直到找到一个可以工作的适配器。