Здравствуйте. Задача: написать php+js функцию, которая будет перенаправлять пользователя на страницу через X секунд. Например: go.php - файл с инициализацией функции goto.php - куда должен попасть через X секунд index.php - любая другая страница. Сначала пользователь заходит на go.php. Таймер, к примеру, ставится на 100 секунд. Далее, он уходит на index.php. Через 20 секунд возвращается на go.php, но там таймер должен быть уже на 80 секундах, а не начинать сначала. Кто может помочь?
Помогаю советом — не занимайтесь извращениями. Не нужно такого придумывать. Если очень надо — пишите время в куки. При загрузке страницы проверяйте куку — если есть, восстанавливайте таймер.
=) Согласен, в обычных веб-проектах это не нужно. Но тут особый проект И это нужно. А можно пример кода? Просто РНР я еще более-менее знаю, а вот с JS не особо лажу)
Вообщем, колдовал я со скриптом 2 дня, но ничего у меня не получилось... В итоге получилось вот это чудо-юдо: [js] <script> var curTimeFor; var curTimeInt; var ActionFormUse; function wtime(tfor) { curTimeFor = tfor+1; curTimeInt = setInterval("wchan()",1000); } function wchan() { if(curTimeFor>0) { document.all("wtime").innerHTML = '<i>Please wait for '+curTimeFor+' seconds...</i>'; curTimeFor = curTimeFor - 1; } else { clearInterval(curTimeInt); document.all("wtime").innerHTML = '<i>Wait for <a href=top.php?module_main=work>refreshing</a></i>'; window.location = "top.php?module_main=mine&act=work"; } } </script> [/js] HTML: <span id='wtime' class='tdbg' width='100%'><center>... Но оно мне не особо нравится... Я подозреваю, что есть вариант полегче. + я так и не смог реализовать, что бы при переходе на другую страницу, а потом возврате, счетчик продолжал счет
Код (Text): <h1 id="tmr">?</h1> <a href="http://ya.ru">next page</a> <script type="text/javascript"> (function() { var SIZE_INTERVAL = 10; var now = parseInt((new Date()) / 1000); var startTm = ( function() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].split("="); if (cookie[0].replace(/^\s+/, "").replace(/\s+$/, "") == "starttm") { return parseInt(cookie[1]); } } return false; })(); if ((startTm === false) || (startTm + SIZE_INTERVAL < now)) { var startTm = now; document.cookie = "starttm=" + startTm; } var h1 = document.getElementById("tmr"); (function() { var now = parseInt((new Date()) / 1000); var tm = SIZE_INTERVAL - now + startTm; if (tm > 0) { h1.firstChild.nodeValue = tm; } else { h1.firstChild.nodeValue = "BOOM"; clearInterval(arguments.callee.interval); } if (!arguments.callee.interval) { arguments.callee.interval = setInterval(arguments.callee, 1000); } return true; })(); return true; })(); </script>
Просто огроменное спасибо! Очень Вам благодарен. Теперь такого рода вопрос - возможно ли сделать его кросс-платформенным? В IE (5.5+) все заработало на Ура. Opera 9.21 ведет себя странно. При переходе на страницу, а потом возврате, счетчик стоит на месте, а если обновить страницу - отсчет уже пойдет правильно. Т.е если он остановился на 7, побывав на ya.ru 3 секунды, вернувшись мы увидим 7. Обновив получим 4. FireFox нормально, но сначала (примерное полсекунды) показывает старое значение...
Поставил firebug - ругается: h1 has no properties [Break on this error] h1.firstChild.nodeValue = tm; Про какие опции он?
А где тут упомянуты опции? h1 не имеет свойства firstChild, значит "tmr" не был найден и в h1 - undifined