5

有没有办法实现页面刷新功能的回调,刷新后检查页面是否准备好,然后打印消息?我想在单击按钮后显示刷新页面并显示特定消息,但是,我需要留在我的代码中才能知道要显示什么消息。任何类似于下一个代码的东西都会很棒:

location.reload(function(){
   alert ('done refreshing and document is ready');
});
4

4 回答 4

12

在页面重新加载时,您的 JS 应用程序会重新初始化并重新启动,因此您无法进行回调。

但是,您可以做的是在重新加载之前将哈希片段添加到 URL。

window.location = window.location.href + "#refresh";
window.location.reload();

然后,在页面加载时,检查哈希片段是否存在。如果是这样,您就会知道您刚刚刷新了页面。

于 2013-06-04T20:16:47.073 回答
0

如果你想使用 window.location.reload() 你必须使用浏览器的 sessionStorage。这是我的代码,我用它来保存数据。

window.onload = function () {

    var msg = sessionStorage.getItem("nameShah");

    if (msg == "Success") {

        sessionStorage.setItem("nameShah", "");

        alert("Saved Successfully");
    }
}

$("#save").click(function () {

    $.ajax({
        url: "/AspNetUsers/SaveData",
        type: "POST",
        async: true,
        data:{userName: "a"},
        success: function (data) {

            if (data.Msg == "Success") {

                sessionStorage.setItem("nameShah", "Success");
                window.location.reload();
            }         
        }
    });
});

服务器端:

    public ActionResult SaveData(string userName)
    {
        return Json(new { Msg = "Success" }, JsonRequestBehavior.AllowGet);
    }
于 2021-08-01T14:16:20.333 回答
-1

要走的路是使用

$(document).ready(function(){
    alert('done refreshing and document is ready');
});

但它并没有区分第一次加载和刷新。但是您可以使用会话来实现。例如,使用 PHP:

<?php

session_start();

$showJs = false;

if( !isset($_SESSION['loaded_before']) ) {
    $showJs = true;
    $_SESSION['loaded_before'] = true;
}

?>
...
<?php if($showjs) { ?>
<script type="text/javascript">

    $(document).ready(function(){
        alert('done refreshing and document is ready');
    });

</script>
<?php } ?>
于 2013-06-04T20:18:05.283 回答
-1

如果你真的想去 javascript 方面,你可以在重新加载之前使用 sessionStorage.varName ,然后你检查那个 var 并继续。

于 2019-04-19T13:31:13.407 回答