JavaScript捕获window窗口关闭事件

工作中遇到有这样的情景,要在浏览器窗口关闭的时候,提示用户某种操作。

类似在关闭窗口时,提示用户保存当前内容,选择是则保存并关闭窗口,选择否则不关闭窗口,也不做保存操作。

网上找了很多,都是说用js处理window关闭事件的,要么说onbeforeunload 方法,要么说onunload方法。

感觉都不能实现。后来突然想到这样的办法:用这两个方法一起来实现!

原因:

onbeforeunload 事件将会在关闭窗口前执行,你也可以用户决定是否关闭窗口,这个方法只要有返回值并且不是""或null;他就会出一个提示窗口(对ie,firefox没有试过)。

单用这一个方法不能实现上面说的出提示,选择“是”,然后做保存动作的。

且不为空返回值会做为提示是否关闭本窗口的内容提示。

onunload 是在关闭窗口之后执行,不是在关闭窗口之前执行。在这方法里不管做了什么,最后窗口都会关闭。

现在将这两个方法合起来,就正好实现了我们的需求,第一个方法出提示,第二个方法实现选择“是”后的动作:即保存数据。

这里给出示例代码,不考虑刷新的问题。

var isSave =false;

function save(){

//dosomething

}

window.onbeforeunload =function() {

if(!isSave){

return "当前数据还没有保存,关闭或刷新窗口会自动保存数据,是否继续?";

}else{

return "";

}

}

window.onunload =function() {

if(!isSave){

save();

}

}

时间: 2024-10-09 05:26:28

JavaScript捕获window窗口关闭事件的相关文章

[No000090]C#捕获控制台(console)关闭事件及响应cmd快捷键

捕获控制台(console)关闭事件: 1.Ctrl+C信号: 2.Ctrl+Break信号: 3.用户系统关闭Console时: 4.用户退出系统时: 5.系统将要关闭时: using System; using System.Runtime.InteropServices; using System.Threading; using System.Diagnostics; namespace ConsoleApplication2 { public delegate bool Console

Vue中监听窗口关闭事件并在窗口关闭前发送请求

Vue中监听窗口关闭事件并在窗口关闭前发送请求,代码如下: mounted() { window.addEventListener('beforeunload', e => this.beforeunloadHandler(e)) window.addEventListener('unload', e => this.unloadHandler(e)) }, destroyed() { window.removeEventListener('beforeunload', e => thi

JavaScript:window窗口对象

在JavaScript中,window表示的就是一个窗口对象.所以在整个处理过程之中,所有的操作都是以弹框为主 的.范例1:使用警告框 <script type="text/javascript"> window.alert("hello world"); </script> 代码: 效果图: 使用window实现数据的输入操作范例2:观察数据的输入操作 <script type="text/javascript"&

js监听 window.open 关闭事件

转载自:http://blog.csdn.net/hanshileiai/article/details/41346729 首先创建一个新的对象,这将打开一个弹出这样的: var winObj = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0'); 为了知道这个弹出窗口关闭,你就必须保持与像下面这样的循环检查这一点: var loop = setInterval(func

窗口关闭事件

import java.awt.*;import java.awt.event.*; class c { public static void main(String arg[]) { Frame f=new Frame("GridLayout");//设置框架窗口标题 f.setLayout(new GridLayout(4,4));//设置4行4列的网格布局 f.add(new Button("7")); f.add(new Button("8&quo

javascript获取window窗口常用函数

获取窗口滚动条高度: /******************** *获取窗口滚动条高度 ******************/ function getScrollTop() { var scrollTop=0; if(document.documentElement&&document.documentElement.scrollTop) { scrollTop=document.documentElement.scrollTop; } else if(document.body) {

自己收藏-javascript用window.open的子窗口关闭自己并且刷新父窗口

function closeMeAndReloadParent() { opener.location.reload(); window.close(); } 一种在父窗口中得知window.open()出的子窗口关闭事件的方法 <HTML><BODY><P> </P><form name=fm_Info><input type=text name=txtValue></form><script language=j

关于在SharePoint2013中弹出模态化窗口的问题及关闭事件。

js: /*弹出对话框方法开始*//** 弹窗方法(需要回传值时,自定义回调方法)* @url: 弹出窗口页面url* @width: 宽度* @height: 高度* @callback: 回调函数 * @title: 标题名*/function custom_openDialog_callBack(url, width, height, title, callback) {    var options = SP.UI.$create_DialogOptions();    options.

pyside窗口关闭触发事件

窗口关闭事件本质上是重写了类内部的closeEvent方法,可以通过重写这个类去实现其他你想要的关闭事件. 下面的例子实现了一个简单的窗口,并为窗口添加了关闭时弹出提示框的功能. 1 import sys 2 from PySide import QtGui 3 4 5 class Message(QtGui.QWidget): 6 7 def __init__(self): 8 # 如果希望窗口内嵌于其他部件,可添加parent参数 9 super(Message, self).__init_