我们可以在 location.reload(true) 之后有代码吗?

Can we have code after location.reload(true)?

我有一个从服务器重新加载的函数:

location.reload(true)

目前,我在这行之后的任何代码都没有执行。

我很好奇是否有办法能够拥有更多代码运行 重新加载之后?

为什么你需要在重新加载页面后执行一些东西?

如果你需要在重新加载后做一些事情,那么你可以将一些参数传递给页面并检查它以执行额外的事情。您可以重定向到同一页面并传递完整的 url

var url = window.location.href; 
url += '&param=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_________________

使用SessionStorage

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 = '';