Javascript 如何在页面刷新中放置对话框?

Javascript 如何在页面刷新中放置对话框?,javascript,jquery,Javascript,Jquery,我想将此对话框放在页面刷新中。我是说。当我刷新页面时,这一定是输出 <script> $(function() { $("#dialog").dialog({ modal: true, resizable: false, buttons: { "I want to Continue the Exam": function() {

我想将此对话框放在页面刷新中。我是说。当我刷新页面时,这一定是输出

<script>
    $(function() {
        $("#dialog").dialog({
            modal: true,
            resizable: false,
            buttons: {
                "I want to Continue the Exam": function() {
                    $(this).dialog("close");
                },
                "I Refresh": function() {
                    $(this).dialog("close");
                }
            }
        });
    });
</script>

据我所知,当你“刷新”一个页面时,所有的JS对象都会被销毁,也就是说,脚本会被重新加载。因此,当页面处于转换状态时,无法持久保存脚本

I类经典单页应用程序- 因此,如果您只是想重新加载应用程序的某个特定部分,那么可以使用像beforeSend这样的$.ajax方法,在数据请求或“页面刷新”期间显示所需的任何警报或最佳加载微调器/div。然后你可以把它们藏起来

第二类使用路由器 像Angular这样的JS框架为您提供了重新加载应用程序特定路径的选项,而无需重新加载/刷新整个应用程序-$route.reload。您可以根据控制器中的操作显示/隐藏某些div/指令

因此,在刷新时,您必须使用某种形式的异步脚本来处理此提示

使用$.ajax模拟伪代码-

$.ajax({
  url: "_URL_to_get_or_post_data__",
  beforeSend: function( xhr ) {
    $popup.show();
  }
})
  .done(function( data ) {
      $popup.hide();
    }
});

浏览器有一个安全功能,不会让页面阻止用户离开页面。离开页面意味着关闭选项卡/浏览器、导航到其他页面或刷新。停止用户的唯一方法是在卸载之前将函数分配给onbeforeunload。像这样:

onbeforeunload = function () { return "You have unsaved data. Are you sure you want to exit?"; }
此消息是同步的,它将停止页面上运行的所有javascript。如果用户按“确定”,浏览器将离开页面或刷新,否则它将保留在页面上

编辑

用法:当用户更改了某些内容并且有未保存的数据时-您可以在卸载之前为onbeforeunload分配一个函数:

保存数据后,将onbeforeunload设置为null:


你的意思是当用户按下浏览器中的刷新按钮或F5时,你想显示这个对话框吗?是的,你说得对!我认为这是不可能的。你唯一的选择就是使用“谢谢”。对不起,新手帮了个忙。你能在卸货前用那个吗。使用我的对话框。请把密码放在这里。谢谢你的回答,先生。我不明白你说的话。但所有人都知道我的方式是不可能的。是的,在一行中这是不可能的。但是如果您有这样的需求,您可以使用jQueryAjax进行模拟。如果我使用jquery和ajax,我可以做我想做的事情吗?你能在这里评论一下代码吗,先生..我该如何应用这个代码,先生?当我在我的netbeans上使用它时,它们会将其标记为只读。
onbeforeunload = function () { return "some message"; }
onbeforeunload = null;