Вход

Просмотр полной версии : нажимать на кнопку автоматом


djonA
03.06.2015, 22:25
Подскажите как каждые 24 часа, ну или раз в день в 12.00 нажимать на кнопку.

Подскажите плизз варианты.

Вот кнопка:
<input type="submit" id="subaa1" value="нажать каждые 24 часа">

KosBeg
03.06.2015, 22:33
поверяем время - https://learn.javascript.ru/datetime
и если сейчас нужное время - кликаем по кнопке -
айди_кнопки.click();
// например у вашем примере нужно
subaa1.click();

djonA
03.06.2015, 22:42
да но для этого надо обновлять страницу, а я хочу что бы оно нажимало и обновляло мне данные раз в день в 12 часов ночи. без обновления страницы

djonA
03.06.2015, 22:43
что то вроде нажатия на cron для кнопки

рони
03.06.2015, 23:07
djonA,
при заходе на страницу вычислить время до следующих 12 часов -- запустить таймер который запустить функцию клика в нужное время и снова вычислит время до следующих 12 часов

Decode
04.06.2015, 00:54
Вроде работает :)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<button>bla-bla</button>

<script>
var el = document.getElementsByTagName('button')[0];

el.addEventListener('click', function() {
alert('Click');
});

var timer = setInterval(function() {
var now = new Date();
var date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 12, 0);

if(now.toLocaleString() == date.toLocaleString()) {
el.click();
console.log('yes');
}
}, 1000);
</script>
</body>
</html>

рони
04.06.2015, 01:12
Decode,
setInterval будет долбить каждую секунду а таймер сработает 1 раз
и вы уверены что if(now.toLocaleString() == date.toLocaleString()) когдато сработает?
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div>bla-bla</div>

<script>
var el = document.getElementsByTagName('div')[0];

el.addEventListener('click', function() {
alert('Click');
});

var timer = setInterval(function() {
var now = new Date();
var date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());


el.innerHTML += (now.toLocaleString() == date.toLocaleString()) + " "


}, 1000);
</script>
</body>
</html>

Decode
04.06.2015, 01:17
и вы уверены что if(now.toLocaleString() == date.toLocaleString()) когдато сработает?

Срабатывал, я проверял.

рони
04.06.2015, 01:23
Decode,
а почему в 7 посте в коде всегда false ?

Decode
04.06.2015, 01:30
рони, хм, странно...

Когда я запускал пример у меня два раза не срабатывало условие. Первый раз я писал if(now == date), но потом вспомнил, что два объекта равны друг-другу если тыдым-тыдым. Затем я изменил условие if(+now == +date) - условие тоже не срабатывало. Но когда я поменял на это if(now.toLocaleString() == date.toLocaleString()) - алерт выскочил :D Можете проверить сами.

рони
04.06.2015, 01:32
Decode,
я и так проверил что этот код никогда не сработает -- чего-то нехватает :)

рони
04.06.2015, 01:33
Decode,
хочется чтоб каждую секунду now.toLocaleString() == date.toLocaleString() выдавала true :dance: в коде 7 поста.

Decode
04.06.2015, 01:40
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<button>bla-bla</button>

<script>
var el = document.getElementsByTagName('button')[0];

el.addEventListener('click', function() {
alert('Click');
});

var timer = setInterval(function() {
var now = new Date();
var date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 1, 37);

if(now.toLocaleString() == date.toLocaleString()) {
console.log(now.toLocaleString());
console.log(date.toLocaleString());
el.click();
}
}, 1000);
</script>
</body>
</html>

рони, я только что запустил этот код.

http://savepic.su/5646896.png

рони
04.06.2015, 01:55
Decode,
да срабатывает - но где уверенность что сработает ???

Decode
04.06.2015, 01:58
рони, а что может помешать? И покажите как правильно надо сделать, если не сложно.

рони
04.06.2015, 02:14
Decode,
я уже написал выше вычислил бы время до события и запустил таймер -- а не сравнивал бы время каждую секунду - https://learn.javascript.ru/settimeout-setinterval#реальная-частота-срабатывания

вдруг этих 00 секунд не будет ?

Decode
04.06.2015, 02:23
рони, ок.

рони
04.06.2015, 08:37
:-?
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<button>bla-bla</button>
<script>
var button = document.getElementsByTagName("button")[0];
button.addEventListener("click", function() {
alert("Click")
});

function calculator() {
var now = new Date,
date = (new Date).setHours(12, 0, 0, 0);
now > date && date.setDate(date.getDate() + 1);
setTimeout(go, date - now)
}

function go() {
button.click();
calculator();
}
calculator();

</script>
</body>
</html>