Невозможно получить URL-адрес страницы, на которую собирается пользователь, в функции unload
или вообще (в некоторых случаях это может привести к нарушению конфиденциальности). И идентификатор фрагмента (хеш) в URL не помешает кешированию; изменение его даже не перезагрузит страницу. Для кэшбастера вы должны будете написать часть URL ?query
, что вы можете сделать, например, через. location.search= '?'+Math.random();
.
Но ничего из этого не является хорошей идеей. Поведение, при котором браузеры «запоминают» предыдущее значение формы при перезагрузке или переходе назад / вперед на страницу, нежелательно, поэтому лучше всего вообще не использовать поле формы. Пусть сценарий запишет данные в другой части DOM:
<span id="counter" class="remaining-300"></span>
и прочитайте это из .className
элемента span в скрипте, или просто напишите переменную прямо в JS:
<span id="counter"></span>
<script type="text/javascript">
var remaining= 300;
</script>
Это приведет к сбросу обратного отсчета до 300 секунд при каждой загрузке страницы.
Возможно, вам также придется подумать о «bfcache», который во многих современных браузерах сохраняет вашу исходную страницу - включая все содержимое и состояние скрипта на ней - когда пользователь уходит с экрана, затем возвращает ее без перезагрузки при нажатии 'Назад'.
В настоящее время будет продолжаться отсчет времени, но он не будет отмечен, пока страница скрывалась, поэтому у вас будет столько же времени, сколько у вас было при выходе. Если это не то, что вы хотите, вы можете попытаться установить тайм-аут крайнего срока независимо от интервала тикера, чтобы всегда срабатывать в ожидаемое время перезагрузки. Или, в крайнем случае, и, как правило, этого следует избегать, вы можете сознательно отключить bfcache, установив onunload
на что угодно, даже на функцию, которая ничего не делает.