0

我有这个代码:

$(window).bind('beforeunload', function () {

        $("#dialogsendnotifications").dialog('open');
    });

    $("#dialogsendnotifications").dialog({

        autoOpen: false,
        closeOnEscape: false,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
            },
            "No": function () {
                $(this).dialog('close');
            }
        }
    });

所以基本上它的作用是当用户试图离开时它会弹出yes no 对话框。问题是对话框出现了,但它在用户甚至可以选择一个按钮之前就离开了页面。

有人可以告诉我如何让它等到用户选择答案吗?

4

3 回答 3

3

你不能。该onbeforeunload事件非常非常严格。您所能做的就是返回一个字符串,然后浏览器将在其自己的对话框中使用该字符串。你根本不能做任何花哨的事情。

这是一个示例:Live copy | 来源

jQuery(function($) {

  $(window).bind("beforeunload", function(event) {
    return "This is the message you're allowed to provide";
  });

});
于 2012-04-28T09:13:18.570 回答
0

谢谢你们。对我来说,这有帮助:

$(window).on('beforeunload', function(){
 return '';
})

但在我的例子中,.each()我的“beforeunload”函数中有一个循环()。然后不要忘记在要返回值之前退出循环;)

于 2014-09-10T14:59:36.487 回答
-1

返回 false 以阻止该操作,如下所示:

$(window).bind('beforeunload', function () {
    $("#dialogsendnotifications").dialog('open');
    return false;
});
于 2012-04-28T09:13:14.470 回答