Chciałbym zaimplementować kod JavaScript, który stwierdza, że: jeśli strona jest wczytywana w całości, odśwież stronę natychmiast, ale tylko raz. Utknąłem na „tylko raz”:
window.onload = function () {window.location.reload()}
daje to pętlę bez „tylko raz”. jQuery jest ładowany, jeśli to pomaga.
javascript
jquery
refresh
reload
Jaskółka oknówka
źródło
źródło
Odpowiedzi:
Powiedziałbym, że użyj skrótu, w ten sposób:
window.onload = function() { if(!window.location.hash) { window.location = window.location + '#loaded'; window.location.reload(); } }
źródło
Kiedy napotykam ten problem, szukam tutaj, ale większość odpowiedzi próbuje zmodyfikować istniejący adres URL. Oto kolejna odpowiedź, która działa dla mnie przy użyciu localStorage.
<script type='text/javascript'> (function() { if( window.localStorage ) { if( !localStorage.getItem('firstLoad') ) { localStorage['firstLoad'] = true; window.location.reload(); } else localStorage.removeItem('firstLoad'); } })(); </script>
źródło
<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>
Ze względu na warunek if strona przeładuje się tylko raz, ja też napotkałem ten problem i szukając znalazłem to fajne rozwiązanie. U mnie to działa dobrze.
źródło
Sprawdź ten link, zawiera kod skryptu java, którego możesz użyć do odświeżenia strony tylko raz
http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html
Istnieje więcej niż jeden sposób na odświeżenie strony:
rozwiązanie1 :
Aby odświeżyć stronę przy każdym jej otwarciu, użyj:
<head> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </head>
rozwiązanie2:
<script language=" JavaScript" > <!-- function LoadOnce() { window.location.reload(); } //--> </script>
Następnie zmień swoje zdanie
<Body onLoad=" LoadOnce()" >
rozwiązanie3:
response.setIntHeader("Refresh", 1);
Ale to rozwiązanie odświeży stronę więcej niż jeden raz, w zależności od określonego czasu
Mam nadzieję, że ci to pomoże
źródło
umieściłem to w mojej głowie tagi strony, na której chcę jednorazowo załadować:
<?php if(!isset($_GET['mc'])) { echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />'; } ?>
wartość „mc” można ustawić na dowolną, ale obie muszą być zgodne w dwóch wierszach. a „= mobile” może być „= cokolwiek chcesz”, wystarczy wartość, aby zatrzymać odświeżanie.
źródło
Wreszcie po dwóch miesiącach poszukiwań otrzymałem rozwiązanie do ponownego ładowania strony.
Działa dobrze na moim projekcie JS po stronie klienta.
Napisałem funkcję, która poniżej przeładowuje stronę tylko raz.
1) Najpierw uzyskaj czas wczytywania przeglądarki
2) Pobierz aktualny znacznik czasu
3) Czas ładowania przeglądarki internetowej + 10 sekund
4) Jeśli czas wczytywania przeglądarki jest o 10 sekund dłuższy niż aktualny znacznik czasu, wówczas stronę można odświeżyć za pomocą funkcji "reloadPage ();"
Ale jeśli nie jest dłuższy niż 10 sekund, oznacza to, że strona jest właśnie ponownie ładowana, więc nie będzie ponownie ładowana.
5) Dlatego jeśli wywołasz "reloadPage ();" funkcja gdzieś na stronie twojego pliku js zostanie ponownie załadowana tylko raz.
Mam nadzieję, że to komuś pomoże
// 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();
źródło
<script> function reloadIt() { if (window.location.href.substr(-2) !== "?r") { window.location = window.location.href + "?r"; } } setTimeout('reloadIt()', 1000)(); </script>
to działa doskonale
źródło
Po
</body>
tagu:<script type="text/javascript"> if (location.href.indexOf('reload')==-1) { location.href=location.href+'?reload'; } </script>
źródło
Musisz użyć informacji GET lub POST. GET byłoby najprostsze. Twój JS sprawdziłby adres URL, gdyby nie znaleziono określonego parametru, nie odświeżyłby tylko strony, ale raczej wysłałby użytkownika do „innego” adresu URL, który byłby tym samym adresem URL, ale z parametrem GET .
Na przykład:
http://example.com -> odświeży
http://example.com?refresh=no -> nie odświeży
Jeśli nie chcesz niechlujnego adresu URL, umieściłbym trochę PHP na początku treści, która odzwierciedla ukrytą wartość, która zasadniczo mówi, czy niezbędny parametr POST, aby nie odświeżać strony, został uwzględniony w początkowym żądaniu strony. Zaraz po tym można dołączyć kod JS, aby sprawdzić tę wartość i w razie potrzeby odświeżyć stronę Z tymi informacjami POST.
źródło
Spróbuj z tym
var element = document.getElementById('position'); element.scrollIntoView(true);`
źródło
Spróbuj użyć poniższego kodu
var windowWidth = $(window).width(); $(window).resize(function() { if(windowWidth != $(window).width()){ location.reload(); return; } });
źródło
var foo = true; if (foo){ window.location.reload(true); foo = false; }
źródło
Użyj tego
<body onload = "if (location.search.length < 1){window.location.reload()}">
źródło
użyj window.localStorage ... w ten sposób
var refresh = $window.localStorage.getItem('refresh'); console.log(refresh); if (refresh===null){ window.location.reload(); $window.localStorage.setItem('refresh', "1"); }
To dla mnie praca
źródło
Oto kolejne rozwiązanie z setTimeout, nie idealne, ale działa:
Wymaga parametru w aktualnym adresie URL, więc po prostu zobrazuj aktualny adres URL tak:
www.google.com?time=1
Poniższy kod powoduje jednorazowe ponowne załadowanie strony:
// 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); } }
Zaakceptowana odpowiedź zawiera najmniejszą ilość kodu i jest łatwa do zrozumienia. Właśnie przedstawiłem inne rozwiązanie tego problemu.
Mam nadzieję, że to pomoże innym.
źródło
Użyj rel = "external", jak na przykładzie poniżej
<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
źródło