我们可以在 location.reload(true) 之后有代码吗?
Can we have code after location.reload(true)?
我有一个从服务器重新加载的函数:
location.reload(true)
目前,我在这行之后的任何代码都没有执行。
我很好奇是否有办法能够拥有更多代码运行 在 重新加载之后?
为什么你需要在重新加载页面后执行一些东西?
如果你需要在重新加载后做一些事情,那么你可以将一些参数传递给页面并检查它以执行额外的事情。您可以重定向到同一页面并传递完整的 url
var url = window.location.href;
url += '¶m=1'
window.location.href = url;
因此,当您的页面重新加载时,您可以通过 GET 检查参数并执行任何您想要的操作。希望这个技巧能帮到你!
________________METHOD 1: 与 PHP_________________
1) 使用参数重新加载
2) 使用 PHP
获取该参数
例如:
window.location.href += '&reloading=1';
//it's equivalent to:
//window.location.href = window.location.href + '&reloading=1';
然后:
<?php
if (isset($_GET['reloading'])) {
echo '<script>pageReloaded();</script>';
}
?>
由于PHP会先执行,那个小脚本(函数调用)会在javascript中被写入然后执行,所以pageReloaded()函数会被调用。
一个完整的例子是:
<?php if (isset($_GET['reloading'])) echo '<script>pageReloaded();</script>'; ?>
<script>
function reloadNow(){
alert("I'm about to reload");
window.location.href += '&reloading=1';
}
function pageReloaded(){
alert("I've been reloaded!");
}
</script>
<button onclick="reloadNow()">Press to reload</button>
________________METHOD 2:没有 PHP,只有 JAVASCRIPT_________________
1) 设置会话存储。
2) 重新加载
3) 获取 SessionStorage
例如:
<script>
function reloadNow(){
alert("I'm about to reload");
sessionStorage.setItem('reloading',"true");
window.location.reload(true);
}
//when loading:
if (sessionStorage.getItem('reloading') === "true") {
sessionStorage.clear(); //so it doesn't trigger next time
alert("I've been reloaded!");
}
</script>
<button onclick="reloadNow()">Press to reload</button>
最好的方法是编写一个函数,如果设置了某些 "GET" 变量并在每个 运行 上检查它们,例如 mypage.html?reload=true
甚至散列位置:mypage.html#reload
你可以这样比较:
$(document).ready(function () {
if (window.location.hash == '#reload') {
onReload();
}
});
function onReload () {
console.log('test');
}
function reload () {
window.location.hash = 'reload';
window.location.reload();
}
只需调用reload();
函数即可。
输出(在控制台中):test
然后,如果您不希望您的函数 运行 如果页面再次刷新,您可以将人们从散列 #reload
重定向:window.location.hash = '';
我有一个从服务器重新加载的函数:
location.reload(true)
目前,我在这行之后的任何代码都没有执行。
我很好奇是否有办法能够拥有更多代码运行 在 重新加载之后?
为什么你需要在重新加载页面后执行一些东西?
如果你需要在重新加载后做一些事情,那么你可以将一些参数传递给页面并检查它以执行额外的事情。您可以重定向到同一页面并传递完整的 url
var url = window.location.href;
url += '¶m=1'
window.location.href = url;
因此,当您的页面重新加载时,您可以通过 GET 检查参数并执行任何您想要的操作。希望这个技巧能帮到你!
________________METHOD 1: 与 PHP_________________
1) 使用参数重新加载
2) 使用 PHP
获取该参数例如:
window.location.href += '&reloading=1';
//it's equivalent to:
//window.location.href = window.location.href + '&reloading=1';
然后:
<?php
if (isset($_GET['reloading'])) {
echo '<script>pageReloaded();</script>';
}
?>
由于PHP会先执行,那个小脚本(函数调用)会在javascript中被写入然后执行,所以pageReloaded()函数会被调用。
一个完整的例子是:
<?php if (isset($_GET['reloading'])) echo '<script>pageReloaded();</script>'; ?>
<script>
function reloadNow(){
alert("I'm about to reload");
window.location.href += '&reloading=1';
}
function pageReloaded(){
alert("I've been reloaded!");
}
</script>
<button onclick="reloadNow()">Press to reload</button>
________________METHOD 2:没有 PHP,只有 JAVASCRIPT_________________
1) 设置会话存储。
2) 重新加载
3) 获取 SessionStorage
例如:
<script>
function reloadNow(){
alert("I'm about to reload");
sessionStorage.setItem('reloading',"true");
window.location.reload(true);
}
//when loading:
if (sessionStorage.getItem('reloading') === "true") {
sessionStorage.clear(); //so it doesn't trigger next time
alert("I've been reloaded!");
}
</script>
<button onclick="reloadNow()">Press to reload</button>
最好的方法是编写一个函数,如果设置了某些 "GET" 变量并在每个 运行 上检查它们,例如 mypage.html?reload=true
甚至散列位置:mypage.html#reload
你可以这样比较:
$(document).ready(function () {
if (window.location.hash == '#reload') {
onReload();
}
});
function onReload () {
console.log('test');
}
function reload () {
window.location.hash = 'reload';
window.location.reload();
}
只需调用reload();
函数即可。
输出(在控制台中):test
然后,如果您不希望您的函数 运行 如果页面再次刷新,您可以将人们从散列 #reload
重定向:window.location.hash = '';