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

时间:2014-11-04 07:19:38

标签: javascript jquery

我想把这个对话框放在页面刷新中。我的意思是。当我刷新页面时,这必须是输出。

<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>

2 个答案:

答案 0 :(得分:0)

据我所知,当你'刷新'一个页面时,所有JS对象都被销毁(那些用脚本编写的)。换句话说,脚本被重新加载。因此,当页面处于转换状态时,您无法保留脚本。

I型(经典单页应用程序) - 因此,如果您只是想重新加载应用程序的特定部分,那么使用$ .ajax()方法(如beforeSend())在数据请求或“页面刷新”期间显示您想要的任何内容(警报或最佳加载微调器/ div) 。然后你可以把它们隐藏在done()上。

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

所以你必须使用某种形式的异步脚本来处理这种“PRFRPT而REFRESH”的情况。

使用$ .ajax()来模拟(伪代码) -

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

答案 1 :(得分:0)

浏览器具有安全功能,不会让页面阻止用户离开页面。离开页面意味着关闭标签/浏览器,导航到其他页面或刷新。停止用户的唯一方法是将功能分配给onbeforeunload。像这样:

onbeforeunload = function () { return "You have unsaved data. Are you sure you want to exit?"; }

此消息是同步的,它将停止在页面上运行的所有javascript。如果用户按下确定,浏览器将离开页面(或刷新),否则它将保留在页面上。

修改

用法:当用户更改了某些内容并拥有未保存的数据时 - 您将一项功能分配给onbeforeunload

onbeforeunload = function () { return "some message"; }
保存数据后

onbeforeunload设置为null:

onbeforeunload = null;