Spa*_*son 5 javascript mobile android dom-events ios
给出以下jsFiddle,这是一个简单的递增计数器
....如果我使用移动设备(智能手机或平板电脑为了争论)访问上面的网址,计数器开始按照您的预期递增,只要有JavaScript支持,那么看来如果我按"主页" "按钮,或单击电源按钮一次关闭屏幕(但保持手机开机),然后脚本将停止运行,计数器停止递增.我期待这种情况发生,并且我理解为什么在移动设备上保留电池寿命非常重要的原因,因此UI线程睡眠或类似情况是有道理的.重新访问浏览器后,计数器将继续递增.在现实世界中,我假设,尽管处于不活动期,但使用JavaScript确定超时时间的网站不会超时.
我也假设,这将因设备而异,通过固件,通过软件什-什么,我想在这里确定是是否有一个标准的方法或默认行为内置到手机的发展框架,这和如何在任何形式的一致性设备的行为.
我不完全确定我在这里问过一个好问题,但我很难从SO中找到100%的相关信息,或者我不太清楚在搜索时我需要问什么问题.
谢谢
没有JavaScript框架可以停止执行或更改底层JS引擎的行为.他们无法影响setTimeout.
然而,该行为在WindowTimers界面上的当前HTML5草案中是标准化的(这并不意味着它是这样实现的).你会在那里找到这个说明:
此API不保证计时器将按计划运行.由于CPU负载,其他任务等导致的延迟是预期的.
而且,更明确的是:
9)(可选)等待另一个用户代理定义的时间长度.
注意:这旨在允许用户代理根据需要填充超时,以优化设备的电源使用.例如,一些处理器具有低功耗模式,其中定时器的粒度减小; 在这样的平台上,用户代理可以减慢定时器以适应该调度,而不是要求处理器使用更准确的模式及其相关的更高功率使用.
您也可以在桌面浏览器上看到此类行为,这些浏览器实现的最小超时时间为4毫秒(在MDN上阅读说明).因此,如果他们只认为有必要,那么每个设备/软件/固件停止执行都是合法的.
您可能还想查看WindowAnimationTiming草稿.
如果您在动画/时钟/等中使用setInterval/ setTimeout,则始终使用Date对象(例如,通过Date.now())测量实际经过的时间.