Javascript setTimeout on iOS Safari

Javascript setTimeout on iOS Safari

本文关键字:Safari iOS on setTimeout Javascript      更新时间:2023-09-26

我正在编写一个小脚本,警告用户他的会话即将超时,他/她的更改可能无法保存。

在任何浏览器上,这都能很好地工作,我实现了一个解决方案,该解决方案只使用setTimeout在一定时间后触发一个对话框(除非用户在其间采取某些操作)。

然而,在iOS Safari上,这种方法不起作用,因为当用户导航到他/她的手机上的另一个应用程序时,setTimeout会"暂停"。一旦用户再次打开Safari并返回页面,计时器将继续其停止的位置,而不是查看过期的总时间。

关于如何处理iPhone上不会中断的会话超时警告,有什么建议吗?

  • 在变量中设置会话的结束时间。

  • 不要使用计数器,而是使用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();
    

  • 每隔一秒将结束时间与当前时间进行比较

    免责声明:处理用户返回和会话结束的情况。