有没有办法为页面刷新功能实现回调,在刷新后检查页面是否准备就绪,然后打印一条消息?我想在点击按钮后显示刷新页面并显示某条消息,但是,我需要保留在我的代码中以便知道要显示的消息。任何类似于下一个代码的东西都会很棒:
location.reload(function(){
alert ('done refreshing and document is ready');
});
答案 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);
}