#javascript #html #refresh #page-refresh
#javascript #HTML #обновить #страница-обновить
Вопрос:
У меня есть код, который обновит страницу при нажатии кнопки, но когда я даю только для обновления один раз в день, это не позволяет мне обновляться. и иногда, когда я загружаю страницу, это не позволяет мне обновлять страницу.
function CheckRefresh(){
var lastRefresh = new Date();
setInterval(function(){
var now = new Date();
if (new Date() - lastRefresh > 1000 * 60 * 60 * 24) {
location.reload();
}
},60000);
//Console.log(lastrefresh);
}
<button type="button" data-toggle="tooltip" onClick="CheckRefresh()" data-placement="bottom" class="btn-shadow mr-3 btn btn-dark">Refresh</button>
Я уже ссылался на сообщение, связанное с этим, в StackOverflow.
Комментарии:
1. Для этого вам нужно какое-то постоянное хранилище. Вы можете сделать это с помощью файла cookie — если файл cookie не установлен ИЛИ время обновления в cookie> 24h: разрешить обновление
Ответ №1:
Это должно сработать, хотя я не смог его протестировать, поскольку вам не разрешено устанавливать cookie на стороннем веб-сайте.
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<button id="refresh" type="button" data-toggle="tooltip" data-placement="bottom" class="btn-shadow mr-3 btn btn-dark">Refresh</button>
<script>
const setRefreshCookie = () => {
const now = new Date();
const tomorrow = new Date();
/*
* if you want the cookie to expire after 24 hours from the last click
* on the refresh button, you use only 'tomorrow.setTime()' otherwise,
* if you want the cookie to expire as soon as the date changes (even if
* 24 hours have not passed yet) you use both 'tomorrow.setTime()' and
* 'tomorrow.setHours()'
*/
tomorrow.setTime(now.getTime() 1000 * 60 * 60 * 24);
tomorrow.setHours(0, 0, 0, 0);
document.cookie = 'preventRefesh=true;expires=' tomorrow.toUTCString() 'domain=yourdomain.tld;path=/path/to/page';
};
const checkRefreshCookie = () => {
return document.cookie.split('; ').some(cookie => cookie.split('=')[0] === 'preventRefesh');
};
const refreshBtn = document.getElementById('refresh');
const isRefreshCookieSet = checkRefreshCookie();
document.addEventListener('load', () => {
if (isRefreshCookieSet ) {
/*
* disable the button, so that the user has a visual feedback
*/
refreshBtn.setAttribute('disabled', true);
}
});
refreshBtn.addEventListener('click', (event) => {
if (!isRefreshCookieSet ) {
setRefreshCookie();
// location.reload();
console.log('refeshing the page...');
}
event.preventDefault();
event.stopPropagation();
});
</script>
</body>
</html>
Комментарии:
1. да, это работает нормально, но когда я обновляю кнопку обновления своего браузера, все начинается сначала, то есть кнопка обновления снова будет включена, есть ли какое-либо решение для этого. это было бы большим подспорьем.
2. я хочу таким образом, чтобы, если кто-то обновит с помощью button, кнопка должна быть отключена в течение дня, даже если мы обновим браузер или перезагрузим страницу
3. @sreeshasudhev Вы не можете предотвратить собственное событие обновления.
4. @sreeshasudhev, вы можете переместить логику отключения кнопки страницы из события нажатия кнопки в событие загрузки документа (я обновил фрагмент для этого), но вы не можете — и не должны — запретить пользователю обновлять страницу с помощью кнопки панели инструментов браузера.
5. но если он развернут на сервере, и многие пользователи загружают веб-страницу. кнопка обновления будет включена на