Виджет Apple Dashboard setTimeout не работает

Я работаю над виджетом панели инструментов на основе календаря, который я хочу автоматически обновлять в начале нового дня. Тем не менее, я не могу заставить его действительно обновляться. Кажется, он отлично работает в браузере. Я также пытался вручную ввести задержку setTimeout на что-то гораздо более короткое (например, 1 или 2 минуты), и это, похоже, работает.

Это код, который у меня есть:

function Calendar() {
    var _self = this;

    this.daytimer = null;
    this.daytimerAction = function() {
        _self.updateCurrentDate();
    }
    this.resetDaytimer();
}

Calendar.prototype.resetDaytimer = function() {
    var today = new Date(),
        tomorrow = new Date();

    if (this.daytimer) {
        clearTimeout(this.daytimer);
        this.daytimer = null;
    }

    tomorrow.setDate(today.getDate() + 1);
    tomorrow.setHours(0);
    tomorrow.setMinutes(0);
    tomorrow.setSeconds(1);

    this.daytimer = setTimeout(this.daytimerAction, tomorrow.getTime() - today.getTime());
};

Calendar.prototype.updateCurrentDate = function() {
    // Run code to update the day display

    this.resetDaytimer();
};

есть идеи? Единственное, о чем я могу думать, это то, что панель управления приостанавливает/отменяет setTimeout, когда панель управления не работает. Может быть, есть способ сбросить тайм-аут при повторной активации панели?


person Phil    schedule 15.05.2014    source источник


Ответы (1)


Догадаться. документация Apple описывает widget.onshow событие, которое Я могу использовать для перезапуска таймера, а также напрямую вызывать updateCurrentDate(). Существует также событие widget.onhide, которое можно использовать для приостановки таймера.

person Phil    schedule 15.05.2014