当用户单击关闭浏览器时(但不是当用户单击刷新按钮时),JavaScript会确认启动
JavaScript confirm to fire when user clicks to close their browser (but not when they click the refresh button)
这里已经有几个类似的问题,但没有一个能解决我在这里寻找的问题。
当用户点击浏览器上的关闭按钮时,我需要弹出一个警报,确认他们真的想关闭浏览器。这很容易写:
$(window).bind('beforeunload', function(){
return 'Are you sure you want to close your browser?';
});
这个问题是,当你刷新浏览器、点击按钮和链接等时,它也会触发。
大多数情况都可以通过检测按键和检查按键来防止。代码如下:
if (e.keyCode == 114 || e.keyCode == 116 || e.keyCode == 0 || e.keyCode == 17 ||(e.ctrlKey && e.keyCode == 114)){
confirmBrowserClose = false;
}
$("a").bind("click", function() {
confirmBrowserClose = false;
});
$("form").bind("submit", function() {
confirmBrowserClose = false;
});
$("input[type=submit]").bind("click", function() {
confirmBrowserClose = false;
});
这些东西阻止了大部分,但有一件事不起作用,那就是刷新。当用户使用键盘(如F5)刷新时,我可以防止它触发,但我需要知道如何防止用户单击刷新按钮或在URL窗口中输入时触发我的确认警报。
我在互联网上发现的大多数东西都说要么做不到,要么他们谈论使用keyCodes和F5刷新之类的事情。我知道这是可以做到的,因为有很多网站都有这个功能。使用它的几个网站是Facebook和JSFiddle.net。在Facebook中,如果你开始键入状态更新,然后试图关闭浏览器,它会弹出一个确认消息。在JSFiddle中,如果你对你的fiddle进行了更改,然后试图关闭浏览器,它会弹出一个警告警报,如果你关闭,你的更改将丢失。
有人知道怎么做吗?
这是不可能的。如果你观察得当,即使是Facebook.com和JSFiddle.net也没有这个功能。
beforeunload
是离开页面时触发的唯一事件。(通过页面刷新[f5,ctrl+r],关闭选项卡,加载另一个链接[这也导致离开当前页面,从而触发beforeunload
])
相关文章:
- 如何在用户按下F5键或单击浏览器时显示自定义的fancybox's后退/关闭按钮
- 如何在用户单击时创建带有弹出窗格的图像
- 如何对每个用户每天只允许单击一次的按钮进行编码
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 使用jQuery切换来显示内容,但防止在用户单击输入元素时关闭
- 试图修改此javascript代码以减小弹出窗口的大小,或者在用户单击框外时关闭
- 防止用户在jQuery Mobile中ajax加载页面时单击其他位置
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- 用户单击“关闭”按钮后,将永久关闭灯箱
- 如何防止用户使用javascript或jquery在链接中单击鼠标中键
- 一个html/javascript'小工具'知道用户何时单击了小部件外的任意位置
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 创建一个HTML文件,该文件使用DOM在用户每次单击按钮时交换两段内容
- 当用户单击保存按钮时,标签会显示一条消息
- 如何在用户单击共享时禁用共享按钮,并在3小时后启用
- 调用按钮单击事件 ajax 加载的用户控件
- 如何区分用户单击链接和在 UIWebView 中执行自动重定向的页面
- HTML 框架 - 防止引导弹出窗口在用户单击正文时消失
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 我该怎么做才能防止在用户单击后退按钮时出现咆哮消息