Javascript 在jQuery中,当用户尝试更改选项卡或更改窗口时显示警报

Javascript 在jQuery中,当用户尝试更改选项卡或更改窗口时显示警报,javascript,jquery,web,Javascript,Jquery,Web,我想制作一个考试页面,在用户提交之前不允许用户访问其他页面 似乎onunload和onbeforeunload适用于用户显式关闭页面的情况。我想知道当页面失去焦点时是否会触发事件。您可以使用mouseleave事件,如下所示: $(document).on('mouseleave',function(){ log(“鼠标退出”); }); 您可以使用mouseleave事件,如下所示: $(document).on('mouseleave',function(){ log(“鼠标退出”);

我想制作一个考试页面,在用户提交之前不允许用户访问其他页面


似乎onunload和onbeforeunload适用于用户显式关闭页面的情况。我想知道当页面失去焦点时是否会触发事件。

您可以使用
mouseleave
事件,如下所示:

$(document).on('mouseleave',function(){
log(“鼠标退出”);
});

您可以使用
mouseleave
事件,如下所示:

$(document).on('mouseleave',function(){
log(“鼠标退出”);
});
您可以使用
$(window.blur()
事件进行此操作

$(window).blur(function() {
    console.log("page left");
});
或者更好的方法是检查页面可见性,您可以在此处找到:

但是,即使您显示警报,您也无法在页面上保留某人。他们只需勾选此警报,即可不再显示。您可以做的是通知他们,如果他们离开可能不想要的选项卡,测试将自动提交

$(window).blur(function() {
    if(!confirm("Notice about leaving the page")) {
        if(!document.hasFocus()) {
            console.log("user left the page");
        }
    }
});
您可以使用
$(window.blur()
事件来进行此操作

$(window).blur(function() {
    console.log("page left");
});
或者更好的方法是检查页面可见性,您可以在此处找到:

但是,即使您显示警报,您也无法在页面上保留某人。他们只需勾选此警报,即可不再显示。您可以做的是通知他们,如果他们离开可能不想要的选项卡,测试将自动提交

$(window).blur(function() {
    if(!confirm("Notice about leaving the page")) {
        if(!document.hasFocus()) {
            console.log("user left the page");
        }
    }
});

可能的重复可能的重复可能的重复可能的重复谢谢!.blur()正是我想要的。但是我怎样才能检查他们是否真的离开了,这样我就可以禁用提交按钮了?我已经更新了我的答案。最好使用确认对话框而不是警报。如果用户单击“不再显示此消息”,则当用户离开时,确认将返回false/null。所以
!确认(“…”
将告诉您用户是否离开。谢谢!.blur()正是我想要的。但是我怎样才能检查他们是否真的离开了,这样我就可以禁用提交按钮了?我已经更新了我的答案。最好使用确认对话框而不是警报。如果用户单击“不再显示此消息”,则当用户离开时,确认将返回false/null。所以
!确认(“…”
将告诉您用户是否离开。