Ответ 1
Я бы сказал, используя хэш, например:
window.onload = function() {
if(!window.location.hash) {
window.location = window.location + '#loaded';
window.location.reload();
}
}
Я хотел бы реализовать код JavaScript, который гласит: если страница загружена полностью, обновите страницу немедленно, но только один раз. Я застрял на "только один раз"
window.onload = function () {window.location.reload()}
это дает цикл без "только один раз". JQuery загружается, если это помогает.
Я бы сказал, используя хэш, например:
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- script, который можно использовать для обновления страницы только один раз.
Существует несколько способов обновления страницы:
solution1
Чтобы обновить страницу каждый раз, когда она открывается, используйте:
<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()" >
solution3:
response.setIntHeader("Refresh", 1);
Но это решение будет обновлять страницу более одного раза в зависимости от времени, когда вы указываете
Я надеюсь, что это поможет вам
Я помещаю это в мои теги заголовка страницы, на которой я хочу перезагрузить:
<?php if(!isset($_GET['mc'])) {
echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />';
} ?>
значение "mc" может быть настроено на все, что вы хотите, но оба должны совпадать в двух строках. и "= mobile" может быть "= anythingyouwant" ему просто нужно значение, чтобы остановить обновление.
После тега </body>
:
<script type="text/javascript">
if (location.href.indexOf('reload')==-1)
{
location.href=location.href+'?reload';
}
</script>
Вам нужно будет использовать информацию GET или POST. GET будет проще. Ваш 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()}">
используйте window.localStorage... как это
var refresh = $window.localStorage.getItem('refresh');
console.log(refresh);
if (refresh===null){
window.location.reload();
$window.localStorage.setItem('refresh', "1");
}
Это работает для меня
Наконец, я получил решение для повторной загрузки страницы после двухмесячного исследования.
Он отлично работает на моем клиентском проекте JS.
Я написал функцию, которая ниже перезагрузки страницы только один раз.
1) Первое время загрузки браузера
2) Получить текущую метку времени
3) Время загрузки браузера + 10 секунд
4) Если время загрузки браузера на 10 секунд больше текущей отметки времени, то страницу можно обновить с помощью "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();
Вот еще одно решение с 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>