Запуск таймера в режиме ожидания iPhone (без JavaScript)? - PullRequest
1 голос
/ 13 августа 2011

Итак, как я узнал сегодня, если я переведу телефон в спящий режим, на котором запущена функция таймера JavaScript, он будет приостановлен.

Поскольку мне нужен таймер для определенного приложения, которому нужно продолжать записывать время и отображать его, обновляя innerHTML элемента раз в секунду: как, по-вашему, мне следует заставить этот таймер работать?

Спасибо за грандиозную помощь!

1 Ответ

6 голосов
/ 13 августа 2011
var startTime;
var timer;

function displayTime() {
    var now = new Date();
    var timeDiff = new Date(now - startTime); // constructor uses UTC, so use UTC date functions from here on
    var hours = timeDiff.getUTCHours();
    var mins = (timeDiff.getUTCMinutes() < 10) ? '0' + timeDiff.getUTCMinutes() : timeDiff.getUTCMinutes();
    var secs = (timeDiff.getUTCSeconds() < 10) ? '0' + timeDiff.getUTCSeconds() : timeDiff.getUTCSeconds();
    document.getElementById('time').innerHTML = hours + ':' + mins + ':' + secs;
    if (hours >= 2) clearInterval(timer);
}

window.onload = function() {
    startTime = new Date();
    timer = setInterval(displayTime, 1000);
}

Когда телефон просыпается и приложение возвращается на передний план, startTime все равно должно быть исходным временем, когда вы начали считать, поэтому вам просто нужно знать разницу между настоящим моментом и временем. Не нужно обновлять дисплей во время сна; ему просто нужно знать время с момента первоначального запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...