Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Запуск и остановка скрипта по глобальному времени (https://javascript.ru/forum/dom-window/46283-zapusk-i-ostanovka-skripta-po-globalnomu-vremeni.html)

politik86 04.04.2014 12:54

Запуск и остановка скрипта по глобальному времени
 
Всем добрый день! Кто подскажет - имеем некую функцию конкретно мигание елемента:

var newTxt="New text!!!";
var oldTxt=document.title;
function migalka(){
    if(document.title==oldTxt){
        document.title=newTxt;
    }else{
        document.title=oldTxt;
    }
} 


var timer = setInterval(migalka,800);


Как запускать ее по расписанию да еще и на конкретный промежуток времени (тоесть запуск функции каждый час - в 12.00, 13.00, и т.д ) с временем работы к примеру на 30 секунд (тоесть остановка работы скрипта в 12.00 30 сек, в 13.00 30 сек и т.д.)

VBeregovoy 11.04.2014 11:32

setTimeout(function(){
    var d = new Date(); // current time
    var mins = d.getMinutes();
    if(mins == '00') {
        migalka();
    }
}, 60000);


Каждых 60 секунд снимаем время - если время 00 - выполняем функцию migalka()

Sweet 11.04.2014 11:50

Цитата:

Сообщение от VBeregovoy
setTimeout

Цитата:

Сообщение от VBeregovoy
Каждых 60 секунд

Советы на javascript.ru - всегда качественные и профессиональные!
Цитата:

Сообщение от VBeregovoy
mins == '00'

Я конечно понимаю, что js с динамической типизацией, но зачем крутить пистолет на пальце, а потом удивляться, что прострелил себе колено?
alert( typeof (new Date).getMinutes() );

Нахер так жить?

politik86 11.04.2014 12:11

Цитата:

Сообщение от VBeregovoy (Сообщение 307246)

Каждых 60 секунд снимаем время - если время 00 - выполняем функцию migalka()


Спасибо получилось - функция запускаеться

Sweet 11.04.2014 12:18

(function () {
    var timerId = null;
    var originTitle = document.title;
    var message = "New text!!!";

    var date = new Date;
    date.setMinutes(0);
    date.setHours(date.getHours() + 1);
    // date - это ближайшее время, когда 00 минут (ну ты понел)
    
    setTimeout(timer, date - new Date);
    
    
    function timer() {
        setTimeout(timer, 3600000); // 3600000 == 60 * 60 * 1000 - 1 час
        
        startNotify();
        setTimeout(stopNotify, 30000);
    }
    
    function startNotify() {
        timerId = setInterval(notify, 800);
    }
    
    function stopNotify() {
        clearInterval(timerId);
    }
    
    function notify() {
        document.title = document.title == originTitle ? message : originTitle;
    }
} ());
Код не проверял - лениво было. А запускать проверку каждую секунду - это говнологика.


Часовой пояс GMT +3, время: 13:35.