我想实现一个JavaScript代码,声明以下内容:如果页面完全加载,请立即刷新页面,但仅刷新一次。我被困在“只有一次”:
window.onload = function () {window.location.reload()}
这给出了一个没有“仅一次”的循环。如果有帮助,将加载jQuery。
我想实现一个JavaScript代码,声明以下内容:如果页面完全加载,请立即刷新页面,但仅刷新一次。我被困在“只有一次”:
window.onload = function () {window.location.reload()}
这给出了一个没有“仅一次”的循环。如果有帮助,将加载jQuery。
Answers:
我会说使用哈希,像这样:
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脚本代码,您只能使用该Java脚本代码刷新一次页面
刷新页面有多种方法:
解决方案1:
要在每次打开页面时刷新一次,请使用:
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</head>
解决方案2:
<script language=" JavaScript" >
<!--
function LoadOnce()
{
window.location.reload();
}
//-->
</script>
然后改变你的说法
<Body onLoad=" LoadOnce()" >
解决方案3:
response.setIntHeader("Refresh", 1);
但是此解决方案将刷新页面一次以上,具体取决于您指定的时间
希望对您有帮助
最后,经过两个月的研究,我得到了一次重新加载页面的解决方案。
它在我的客户端JS项目上运行良好。
我写了一个仅在重新加载页面下面的函数。
1)首先获取浏览器domload时间
2)获取当前时间戳
3)浏览器加载时间+ 10秒
4)如果浏览器的domload时间+当前当前时间戳的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();
您需要使用GET或POST信息。GET将是最简单的。您的JS会检查URL,如果未找到特定参数,它不仅会刷新页面,还会将用户发送到“不同” URL,该URL是相同的URL,但其中包含GET参数。
例如:
http : //example.com- >将刷新
http://example.com?refresh=no- >不会刷新
如果您不想使用混乱的URL,那么我会在正文的开头添加一些PHP,以回显一个隐藏的值,该值本质上表示初始页面请求中是否包含了用于刷新页面的必要POST参数。之后,您将包括一些JS以检查该值,并在必要时刷新带有该POST信息的页面。
请尝试以下代码
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");
}
对我有用
这是使用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>