Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: таймер
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » таймер

Страниц (3): [1] 2 3 »
 

1. SAD - 05 Февраля, 2010 - 10:27:06 - перейти к сообщению
Собственно то что есть:
есть кнопка , по нажатию которой вызывается таймер обратного отсчета. ну и тикает- тикает. но нерадивый пользователь берет и обновляет страницу. Собственно то, что нужно:
как после обновления страницы, после того как пользователь опять нажал на кнопку. отсчет начался с того времени,которое было у таймера,до произведенного обновления.
Начальное время таймера лежит в переменной.
2. EuGen - 05 Февраля, 2010 - 10:30:02 - перейти к сообщению
Хранить начало отсчета на сервере, при обновлении сравнивать его с текущим временем, тем самым получая число прошедших секунд.
Инициализировать таймер этим значением прошедших секунд.
3. SAD - 05 Февраля, 2010 - 10:33:05 - перейти к сообщению
Вот в чем проблема, по нажатию кнопки у меня вызывается функция javascript'овая , которая вызывает таймер на javascript, как мне время то загнать ,в этой функции, текущее на сервер - не получится?!
4. EuGen - 05 Февраля, 2010 - 11:18:46 - перейти к сообщению
Начальное время (время первоначального отсчета таймера) можете установить самим скриптом, а не js-функцией.
5. SAD - 05 Февраля, 2010 - 13:36:27 - перейти к сообщению
Давайте так, у меня в переменной $time храниться время работы таймера(в секундах).
После нажатия на кнопку у меня будет время $time_a, которое мне нужно как то помнить, после обновления и нажатия на кнопку будет время $time_b.
Данные , которые будут предоставляться скрипту с таймером выглядят так: $time+$time_a-$time_b. Как мне запомнить время $time_a?
6. EuGen - 05 Февраля, 2010 - 13:52:36 - перейти к сообщению
Можете в БД, можете в файл - как больше нравится
7. JustUserR - 06 Февраля, 2010 - 01:46:26 - перейти к сообщению
SAD Если считать что пользователь на намерен взламывать вашу страницу то можно значение положить в cookie с помощью JS-функций для работы с ними - и таким образом презагрузка страницы не будет влиять на время отсчета
Если возможность подстановки cookie критична то хранить время отсчета на сервере и с помощью Iframe или AJAX получать даное время - то есть нажал пользователь на кнопочку и через AJAX оставшееся время отсчета для данного пользователь отправили на сервера - а по onload страницы проверяем нет ли уже для данного пользователя счетчика времени и если есть то продолжаем его и не реагируем более не кнопку пока время не истечет Данный способ плох если нужно отсчитывать по таймеру достаточно малые промежутки времени - ведь если интернет у пользователя медленный то все это AJAX-запросы будут занимать много времени
Существуют и другие способы основанные на JS и перехвате событий
8. SAD - 06 Февраля, 2010 - 03:05:43 - перейти к сообщению
спасибо за ответ, но как я узнаю в какой момент времени таймера я сделаю обновление страницы, чтобы можно было то значение запихнуть в куку?
(Добавление)

Не спиться?))
9. JustUserR - 06 Февраля, 2010 - 03:31:50 - перейти к сообщению
SAD пишет:
Спасибо за ответ, но как я узнаю в какой момент времени таймера я сделаю обновление страницы, что бы можно было, то значение запихнуть в куку?
Пожалуйста! На самом деле это узнать не сложно и ответ зависит от точности таймера - если время таймера большое и сильная точнсть не нужна то можно сохранять значение каждые 10 секунд к примеру Если же нужна большая точность то надо прибегать к средствам JS - например при перезагрузке генерируется событие onunload и можно попытаться успеть сохранить значение - если нужно сохранить значение чуть пораньше то можно использовать onreadystatechange и проверять начало выгрузки документа - существует вариант сохранять значение в window.hash документа то есть в адресоной строке после # но тут есть свои нюансы
SAD пишет:
Не спиться?))
Работать можно и ночью Улыбка
10. SAD - 06 Февраля, 2010 - 03:35:09 - перейти к сообщению
JustUserR пишет:
Если же нужна большая точность то надо прибегать к средствам JS - например при перезагрузке генерируется событие onunload и можно попытаться успеть сохранить значение - если нужно сохранить значение чуть пораньше то можно использовать onreadystatechange и проверять начало выгрузки документа

а на примере это как будет выглядеть , хотя бы основные положения?
11. JustUserR - 07 Февраля, 2010 - 00:38:34 - перейти к сообщению
SAD пишет:
А на примере это как будет выглядеть , хотя бы основные положения?
Самый просто метод это повесить событие на window.onunload и отменить данное событие с помощью установки event.cancelBubble=true и event.returnValue=false а также return false в конце функции обработчика - после этого выполняем действия по сохранению информации в cookie или с помощью запроса на сервер Iframe или AJAX и после этого продолжаем действие пользователя - перезагрузка или выход со страницы соответственно что можно определить по целевому window.location.href
Если не получится убрать событие window.onunload то проверять через короткий интервал времени не изменился ли readyState на выгрузку страницы и сделать действия по сохранию информации
Без обрабочки выхода со страницы впринципе тоже может получится но что в процессе выхода новые данные на сервер могут и не передаваться - поэтому надо подловить момент до выхода - как еще более простой вариант выход мыши за пределы окна (Рука тянется к крестику или меню Улыбка или нажитие на Alt (РУка тянется к Alt+F4 или меню Улыбка
12. SAD - 07 Февраля, 2010 - 13:49:14 - перейти к сообщению
[удалить]
13. JustUserR - 07 Февраля, 2010 - 14:10:13 - перейти к сообщению
SAD пишет:
спасибо за совет, воспользовался печеньками, по событию OnunLoad, повесил функцию, которая записывает текущее время в куки.
Пожалуйста! Кстати существует еще одно интересное решение которое работает вообще без cookie и сохраняет информацию в других истоиниках - к примеру в query-строке URL-адреса и не дает его изменять Улыбка
SAD пишет:
if(!$test)
Может if(!$_COOKIE['test']) попробовать
SAD пишет:
Но лиса не реагирует на эту проверку
ИМХО а что с нее взять Улыбка
14. SAD - 07 Февраля, 2010 - 14:28:59 - перейти к сообщению
JustUserR пишет:
Кстати существует еще одно интересное решение которое работает вообще без cookie и сохраняет информацию в других истоиниках - к примеру в query-строке URL-адреса и не дает его изменять

А можно поподробнее? )
15. JustUserR - 07 Февраля, 2010 - 14:52:39 - перейти к сообщению
SAD пишет:
А можно поподробнее? )
Можно Улыбка В общем суть заключается в том что необходимо работать напрямую с window.location и соответственно query-строкой в нем - и каждый раз по событию onunload сохрянять туда свою инфорацию - и если пользователь решить подменить URL-адрес и данные в нем то страница начнет перезагрухаться и сработает установленное нами событие и в query-строку запишутся наши данные а не то что хотел ввести пользователь - но это работает только против перезагрузки страница а не против выхода где решениям являются cookie Также здесь надо проверять referer чтобы пользователь изначально не ввел в query-строку свои данные

 

Powered by ExBB FM 1.0 RC1