页面刷新功能的回调

时间:2013-06-04 20:10:09

标签: javascript jquery

有没有办法为页面刷新功能实现回调,在刷新后检查页面是否准备就绪,然后打印一条消息?我想在点击按钮后显示刷新页面并显示某条消息,但是,我需要保留在我的代码中以便知道要显示的消息。任何类似于下一个代码的东西都会很棒:

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

4 个答案:

答案 0 :(得分:11)

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

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

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

然后,在页面加载时,检查哈希片段是否存在。如果确实如此,你就会知道你只是刷新了页面。

答案 1 :(得分:0)

要走的路是

$(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 } ?>

答案 2 :(得分:0)

如果您真的想使用JavaScript,可以在重新加载之前使用sessionStorage.varName,然后检查该var并继续。

答案 3 :(得分: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);
    }