我所拥有的是许多脚本,它们对setTimeout()函数进行了数千次调用,该函数基本上在画布上绘制动画线条。它可以在计算机(当然)上运行得很漂亮,如果用户没有触摸任何东西,也可以在移动设备上运行。在这种情况下,我添加了一个touchstart事件监听器,当触摸任何内容时,它将启动整个动画(它们都是大约30到40秒长)。再次运作良好。问题在于,几乎每个人都有移动设备屏幕昏暗然后在动画完成之前关闭,当然当你看到屏幕昏暗时你触摸屏幕以防止它关闭,因此动画重新开始!
我已经使用clearTimeout()函数愚弄了,我能做的最好就是立即清除所有调用,然后重新启动它。这是我注意到的,我有时会在代码中抛出警告(无论如何)来调试它,我注意到当移动设备上弹出框时它实际上会暂停整个javascript包含所有数千个setTimeout调用,然后当您在警告框中按“确定”时,脚本将以其快速的方式从它停止的位置继续。这就是我想要的。
问题是,是否有全局脚本暂停功能,它将模拟一个警告框,触摸时暂停整个脚本(允许用户说滚动页面或填写文本框等)然后从哪里继续它离开了吗?
在这里添加投诉:为什么在移动设备上滚动页面或缩放或只是单击调出键盘的文本框无论如何影响setTimeout()函数中的时间,它都被加载到内存中快点,时间是绝对的,它一直往往,没有意义。
感谢您的阅读。
答案 0 :(得分:1)
让人困惑,有很多东西要读。并且仍然困惑,我认为你需要不断检查它是否需要提醒,或者你是否提醒。暂停某些事情直到警报消失。
您将使用循环函数,该函数仅在alert = false或sleep = false时运行。
var sleep = false;
function main() {
if (!sleep) {
// We run the script
// Throw alert
// Sleep now = true, because we threw alert
sleep = true;
} else if (sleep == true) {
// Pause
// Re-run when sleep is not false;
main();
} else {
//whatevs
}
或
while (!sleep) {
// do stuff
alert()
sleep = true;
}
答案 1 :(得分:1)
" Global Pause"当/如果屏幕进入睡眠状态时,将在所有浏览器(条形图Firefox)上自动发生。 (我相信Firefox的行为是一种错误,并且是一种永久的唤醒锁定)
您可以通过以下方式检测可见性是否已更改: -
document.addEventListener("visibilitychange", visibilityChange);
这对最初的暗淡没有帮助,但我建议你触摸事件只需要重新开始确认,然后再回到开始并重新初始化。