Я хотел бы реализовать код JavaScript, который гласит следующее: если страница загружена полностью, обновите страницу немедленно, но только один раз. Я застрял на «только один раз»:
window.onload = function () {window.location.reload()}
это дает цикл без «только один раз». Если это помогает, загружается jQuery.
javascript
jquery
refresh
reload
Мартин
источник
источник
Ответы:
Я бы сказал, используйте хеш, например:
window.onload = function() { if(!window.location.hash) { window.location = window.location + '#loaded'; window.location.reload(); } }
источник
Когда я сталкиваюсь с этой проблемой, я ищу здесь, но большинство ответов пытаются изменить существующий URL-адрес. Вот еще один ответ, который работает для меня с использованием localStorage.
<script type='text/javascript'> (function() { if( window.localStorage ) { if( !localStorage.getItem('firstLoad') ) { localStorage['firstLoad'] = true; window.location.reload(); } else localStorage.removeItem('firstLoad'); } })(); </script>
источник
<script type="text/javascript"> $(document).ready(function(){ //Check if the current URL contains '#' if(document.URL.indexOf("#")==-1){ // Set the URL to whatever it was plus "#". url = document.URL+"#"; location = "#"; //Reload the page location.reload(true); } }); </script>
Из-за условия if страница будет перезагружена только один раз. Я тоже столкнулся с этой проблемой, и когда я поискал, я нашел это хорошее решение. У меня это отлично работает.
источник
Отметьте эту ссылку, она содержит код java-скрипта, который вы можете использовать для обновления своей страницы только один раз.
http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html
Есть несколько способов обновить вашу страницу:
решение1 :
Чтобы обновлять страницу каждый раз при ее открытии, используйте:
<head> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </head>
sollution2:
<script language=" JavaScript" > <!-- function LoadOnce() { window.location.reload(); } //--> </script>
Затем измените свое, чтобы сказать
<Body onLoad=" LoadOnce()" >
решение3:
response.setIntHeader("Refresh", 1);
Но это решение обновит страницу более одного раза в зависимости от времени, которое вы указали.
Я надеюсь это поможет тебе
источник
<script> function reloadIt() { if (window.location.href.substr(-2) !== "?r") { window.location = window.location.href + "?r"; } } setTimeout('reloadIt()', 1000)(); </script>
это отлично работает
источник
Я помещаю это в свои главные теги страницы, которую хочу перезагрузить:
<?php if(!isset($_GET['mc'])) { echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />'; } ?>
значение "mc" может быть любым, но оба должны совпадать в двух строках. а "= mobile" может быть "= anyyouwant", ему просто нужно значение, чтобы остановить обновление.
источник
Наконец, после двухмесячного исследования я получил решение для перезагрузки страницы один раз.
Он отлично работает с моим клиентским JS-проектом.
Я написал функцию, которая ниже перезагружает страницу только один раз.
1) Первое получение времени загрузки браузера
2) Получить текущую метку времени
3) Время загрузки браузера + 10 секунд
4) Если время загрузки браузера на + 10 секунд больше, чем текущая временная метка Now, то страницу можно обновить с помощью reloadPage ();
Но если он не превышает 10 секунд, это означает, что страница просто перезагружается, поэтому она не будет перезагружаться повторно.
5) Следовательно, если вы вызываете reloadPage (); функция где-нибудь на странице вашего js файла будет перезагружена только один раз.
Надеюсь, это поможет кому-то
// Reload Page Function // function reloadPage() { var currentDocumentTimestamp = new Date(performance.timing.domLoading).getTime(); // Current Time // var now = Date.now(); // Total Process Lenght as Minutes // var tenSec = 10 * 1000; // End Time of Process // var plusTenSec = currentDocumentTimestamp + tenSec; if (now > plusTenSec) { location.reload(); } } // You can call it in somewhere // reloadPage();
источник
используйте window.localStorage ... вот так
var refresh = $window.localStorage.getItem('refresh'); console.log(refresh); if (refresh===null){ window.location.reload(); $window.localStorage.setItem('refresh', "1"); }
Это работа для меня
источник
После
</body>
тега:<script type="text/javascript"> if (location.href.indexOf('reload')==-1) { location.href=location.href+'?reload'; } </script>
источник
Вам нужно будет использовать информацию GET или POST. Получить было бы проще всего. Ваш JS проверит URL-адрес, если определенный параметр не найден, он не просто обновит страницу, а скорее отправит пользователя на «другой» URL-адрес, который будет тем же URL-адресом, но с параметром GET в нем. .
Например:
http://example.com -> обновит
http://example.com?refresh=no -> не обновит
Если вам не нужен беспорядочный URL-адрес, я бы включил немного PHP в самом начале тела, которое отображает скрытое значение, которое, по сути, говорит, был ли включен необходимый параметр POST для отказа от обновления страницы в первоначальный запрос страницы. Сразу после этого вы должны включить JS, чтобы проверить это значение и обновить страницу с этой информацией POST, если это необходимо.
источник
Попробуйте с этим
var element = document.getElementById('position'); element.scrollIntoView(true);`
источник
Пожалуйста, попробуйте с кодом ниже
var windowWidth = $(window).width(); $(window).resize(function() { if(windowWidth != $(window).width()){ location.reload(); return; } });
источник
var foo = true; if (foo){ window.location.reload(true); foo = false; }
источник
использовать этот
<body onload = "if (location.search.length < 1){window.location.reload()}">
источник
Вот еще одно решение с setTimeout, не идеальное, но оно работает:
Для этого требуется параметр в текущем URL-адресе, поэтому просто изобразите текущий URL-адрес:
www.google.com?time=1
Следующий код заставляет страницу перезагружаться только один раз:
// Reload Page Function // // get the time parameter // let parameter = new URLSearchParams(window.location.search); let time = parameter.get("time"); console.log(time)//1 let timeId; if (time == 1) { // reload the page after 0 ms // timeId = setTimeout(() => { window.location.reload();// }, 0); // change the time parameter to 0 // let currentUrl = new URL(window.location.href); let param = new URLSearchParams(currentUrl.search); param.set("time", 0); // replace the time parameter in url to 0; now it is 0 not 1 // window.history.replaceState({}, "", `${currentUrl.pathname}?${param}`); // cancel the setTimeout function after 0 ms // let currentTime = Date.now(); if (Date.now() - currentTime > 0) { clearTimeout(timeId); } }
В принятом ответе используется минимум кода, и его легко понять. Я просто предложил другое решение этой проблемы.
Надеюсь, это поможет другим.
источник
Используйте rel = "external", как показано ниже в примере
<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
источник