`
laoli5290
  • 浏览: 81405 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

论项目_window.onbeforeunload的使用

阅读更多

项目背景:XXXX资金监管系统,为保证房地产开发公司携款潜逃或者不作为,开发商需要交一部分资金到银行由建委来监管这部分资金的使用。

该方法使用之处:在协议申请的时候,开发商要选择单体楼,一个项目下会有很多的单体,每当点击>>或者<<按钮时,页面都会调用Ajax进行保存或者删除选择楼盘的数据。如下图:


 

当初这样做的原因是:因为是进度过程中的变更,所以懒得动原先写好的代码了,就采用了这么一种方式。采用该种方式会出现两个附加问题就是,第一个问题是在页面上存在两个按钮
,为了保证数据没修改以前的状态,所以如果用户点击“取消”按钮那么之前点击>>
操作的数据要还原回去;第二个问题是因为采用弹出窗口,所以当点击右上角的“关闭”按钮时
,数据也得必须恢复以前状态。

以上第一个问题解决如下:


第二个问题解决方法如下:

var req;
//关闭方法
function back(){
                var bldnolist = "";
	for ( var i = 0; i < document.getElementById("supvisionbld").options.length; i++) {
		if (bldnolist == "") {
			bldnolist = document.getElementById("supvisionbld").options[i].value;
		} else {
			bldnolist = bldnolist + ";" + document.getElementById("supvisionbld").options[i].value;
		}
	}
	req = createReq();//该方法创建XHR对象
	var url = "${ctx}/XX/XX.do?method=closeWin";
	if (req) { 
		req.open("post", url, true);//调用open方法
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');//指定回调函数为callback
		req.onreadystatechange = close_callback;//指定回调函数
		req.send("floorno="+bldnolist+"&state=0&supvisionappno=${obj.supvisionappno }");//发送参数,一般为空
	}
}
//回调函数
function close_callback() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			window.parent.close();
		} else {
		                alert("\u4e0d\u80fd\u5f97\u5230\u63cf\u8ff0\u4fe1\u606f:" + req.statusText);
		}
	}
}

 
 

window.onbeforeunload = function(){
	back();
}

 

 

 

另外本项目还有一个用到onbeforeunload该方法的地方是,退出系统时,直接点击右上角“关闭”按钮时,需要保存用户的退出日志,我也使用了该方法,js代码如下:

window.onbeforeunload = function()
    {
      if (document.body.offsetWidth-50 < event.clientX && event.clientY<0)
      {
        closeStr = "----------------------------------------\n"
                 + "|                                      	|\n"
                 + "|         请按正常方式退出系统              	|\n"
                 + "|                                      	|\n"
                 + "----------------------------------------";
        //在关闭窗口之前执行用户退出的日志保存
     window.onunload = function() {window.location.href = "${ctx}/rbac/index.do?method=logout";} 
        return closeStr;
      }
    }

 

 

 

附:

onunloadonbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过 window.onunload来指定或者在<body>里指定。区别在于onbeforeunloadonunload之前执行,它还可以阻止onunload的执行。onbeforeunload也是在页面刷新或关闭时调用,onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。onunload是无法阻止页面的更新和关闭的,而 onbeforeunload 可以做到。

参考:http://blog.sina.com.cn/s/blog_5f0583ab01010arl.html

 

《《方法如下:

function btnAdd_onclick() {
	var selRight = document.getElementById("bldnolist");
	var strRole = selRight.value;
	var selLeft = document.getElementById("supvisionbld");
	var bldno = "";//需要更改状态位的楼盘
	if (strRole == "") {
		alert("请选择");
	} else {
		for ( var intI = 0; intI < selRight.length; intI++) {
			if (selRight.options[intI].selected) {
				strRole = selRight.options[intI].value;
				bldno = bldno + strRole + ";";
				var strRoleName = selRight.options[intI].text;
				var objOption1 = document.createElement("<option value='"+strRole+"'>");
				objOption1.text = strRoleName;
				selLeft.options.add(objOption1);
				selRight.options[intI] = null;
				intI--;
			}
		}
	}
}

 

 

 

》》方法如下: 

function btnDelete_onclick() {
	var selRight = document.getElementById("supvisionbld");
	var strRole = selRight.value;
	var selLeft = document.getElementById("bldnolist");
	var bldno = "";//需要更改状态位的楼盘
	if (strRole == "") {
		alert("请选择");
	} else {
		for ( var intI = 0; intI < selRight.length; intI++) {
			if (selRight.options[intI].selected) {
				strRole = selRight.options[intI].value;
				var strRoleName = selRight.options[intI].text;
				bldno = bldno + strRole + ";";
				var objOption1 = document.createElement("<option value='"+strRole+"'>");
				objOption1.text = strRoleName;
				selLeft.options.add(objOption1);
				selRight.options[intI] = null;
				intI--;
			}
		}
	}
}

 

 

 

  • 大小: 21.4 KB
  • 大小: 741 Bytes
  • 大小: 1.4 KB
0
1
分享到:
评论

相关推荐

    Documents_防抖_网页刷新_源码.zip

    - 如果需要在刷新后重新请求数据,可以使用`window.onbeforeunload`或`window.onload`事件来监听页面的生命周期,并在合适的时候发起网络请求。 - 对于路由管理,前端路由库如React Router或Vue Router通常有相应...

    vuejs中监听窗口关闭和窗口刷新事件的方法

    在原生JavaScript中,可以使用window.onbeforeunload事件来监听窗口关闭和刷新的行为。该事件会在用户尝试离开页面时触发,可以用来执行一些清理工作或者给出提示。 在Vue.js中,可以通过在组件的生命周期钩子中...

    onunload事件判断浏览器是刷新还是关闭窗口

    window.onbeforeunload = function() { var n = window.event.screenX - window.screenLeft; var b = n &gt; document.documentElement.scrollWidth-20; if(b && window.event.clientY || window.event.altKey) { ...

    捕捉IFrame SRC改变事件

    综上所述,通过使用`window.onbeforeunload`事件,我们可以在一定程度上监测到`&lt;iframe&gt;`中页面的变化情况。这不仅有助于提升用户体验,还能为开发者提供更多的控制权。当然,在实际应用中还需要考虑到跨域等安全性...

    asp获取子窗体返回值

    这里`child_window.asp`是子窗口的ASP页面,`ChildWin`是窗口的名字,`width=400,height=400`定义了窗口的大小。 2. **子窗口处理**:在子窗口的ASP页面(如`child_window.asp`)中,用户可以进行操作并保存结果。...

    javascript Onunload与Onbeforeunload使用小结.docx

    2. **用户体验**:过度使用`onbeforeunload`可能导致用户体验下降,应谨慎设计对话框内容。 #### 七、总结 通过对`onunload`与`onbeforeunload`这两个事件的深入探讨,我们可以更好地理解它们的特点及应用场景。在...

    使用onbeforeunload属性后的副作用

    这个功能其实很简单,就是通过处理window、body或frameset对象或元素的onbeforeunload事件实现的。 这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件。并且它...

    JS针对浏览器窗口关闭事件的监听方法集锦

    这个方法同时使用`onbeforeunload`和`onunload`事件,`onbeforeunload`用于提示,而`onunload`在页面实际卸载时执行。 3. 方式三:适用于IE和Firefox,不区分刷新和关闭,最简单形式 ```javascript window....

    js常用方法收藏 javascript

    - **`window.onbeforeunload`**:这是一个事件处理器,当用户正试图离开页面时被触发。 - **`window.event.clientY`**:返回鼠标指针相对于浏览器视口顶部的距离。如果小于0,表示鼠标可能已移出浏览器窗口。 - **`...

    基于JavaScript判断浏览器到底是关闭还是刷新(超准确)

    页面刷新时先执行onbeforeunload,然后onunload,最后onload。 经过验证我得出的结论是: //对于ie,谷歌,360: //页面加载时只执行onload //页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面...

    用JS判断浏览器刷新还是关闭

    根据提供的部分代码片段和上下文信息,我们可以看到主要关注于`window.onbeforeunload`事件及其处理逻辑。 #### 二、基础知识介绍 1. **`window.onbeforeunload`**: - 这个事件在页面卸载前触发。 - 可以用来...

    Popup_Window:这是一个简单的项目,用于展示如何在弹出窗口中打开 url

    Popup_Window项目是一个旨在演示如何在JavaScript中创建并管理弹出窗口的简单实例。这个项目特别关注于在弹出窗口中加载URL以及处理子窗口关闭时的相关逻辑。在深入讲解相关知识点之前,先来了解一下弹出窗口的基本...

    javascript经典特效---离开页面弹出窗口.rar

    JavaScript提供了`window.onbeforeunload`和`window.onunload`事件来监听页面卸载的过程。 1. `window.onbeforeunload`事件:这个事件在页面开始卸载之前触发,可以用来检查是否需要用户确认离开。通常我们会在这个...

    flex监听浏览器关闭事件

    当用户尝试关闭浏览器窗口时,`window.onbeforeunload`事件会被触发。我们可以通过在Flex应用中调用JavaScript来监听这个事件,并在必要时显示一个警告框或执行其他逻辑。 #### 2. 实现步骤 ##### 2.1 JavaScript...

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

    这是通过覆盖默认的 `window.onbeforeunload` 方法实现的。在Vue组件中,我们可以这样做: ```javascript mounted(){ let _this = this; window.onbeforeunload = function(e){ if(_this.$route.name == ...

    js 页面关闭前的出现提示的实现代码.docx

    如果你的项目中已经引入了jQuery库,那么可以使用jQuery来简化上述操作: ```javascript var formModified = false; $("form").on("input", function () { formModified = true; }); $(window).on("beforeunload...

    JavaScript 关于浏览窗口不关闭的问题

    首先,JavaScript提供了`window.onbeforeunload`事件,这个事件会在窗口(包括页面)即将卸载之前触发。通常,我们可以在这个事件的处理函数中添加代码来提示用户是否确认离开当前页面。以下是一个基本示例: ```...

    javascript经典特效---不提示关闭窗口.rar

    这个确认行为是浏览器的默认设置,由`window.onbeforeunload`事件触发。然而,有时候开发者可能希望禁用这一提示,以提供更流畅的用户体验,尤其是在某些不需要用户确认就能离开的场景下。 下面我们将详细探讨如何...

    javascript 基础篇4 window对象,DOM

    window对象还拥有丰富的事件处理,例如`onbeforeunload`事件。当用户试图离开页面时,可以监听此事件来执行特定的操作。在示例中,通过在`&lt;body&gt;`元素上添加`onbeforeunload`事件监听器,我们可以自定义离开页面时的...

    用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)

    Onunload,onbeforeunload都是在刷新或关闭时调用,可以在[removed]脚本中通过[removed]来指定或者在&lt;body&gt;里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 Onbeforeunload...

Global site tag (gtag.js) - Google Analytics