【问题标题】:Javascript setTimeout on iOS SafariiOS Safari上的Javascript setTimeout
【发布时间】:2012-03-05 20:56:52
【问题描述】:
我正在编写一个小脚本,警告用户他的会话即将超时并且他/她的更改可能无法保存。
在任何浏览器上,效果都很好,我实现了一个解决方案,它只使用 setTimeout 在一定时间后触发对话框(除非用户在其间采取某些操作)。
但是,在 iOS Safari 上,这种方法不起作用,因为当用户导航到他/她手机上的另一个应用程序时,setTimeout 会“停止”。一旦用户再次打开 Safari 并返回该页面,计时器就会从上次中断的地方继续,而不是查看已过期的总时间。
关于如何处理不会在 iPhone 上中断的会话超时警告的任何建议?
【问题讨论】:
标签:
javascript
ios
mobile-safari
settimeout
【解决方案1】:
在变量中设置会话的结束时间。
不使用计数器,而是使用 javascript 的日期:
// get a date object
var today = new Date();
// ask the object for some information
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var theHour = today.getHours();
每秒比较结束时间和当前时间
免责声明:处理用户返回和会话结束的情况。