日期:2014-05-17  浏览次数:20458 次

一个很实用的功能:在邮件编辑状态下关闭网页,弹出对话框
实用126、QQ邮箱,几乎任何一款邮箱,在编辑邮件内容,你想要关闭网页,它会弹出一个对话框,提示说“当前内容未保存,确认退出"
这个代码如何写?
网站找了一堆,全没用。比如这种:
<script language=javascript>  
function window.onbeforeunload()  
{  
if (event.clientX> document.body.clientWidth && event.clientY <0||event.altKey){  
  window.event.returnValue= "确定要退出本页吗? "; //

}
</script>
没效果。


求个可行的效果,实在搞不定这个东西

------解决方案--------------------
<body onbeforeunload="return '"确定要退出本页吗?'">

刷新也算退出的,刷新内容也会丢失
------解决方案--------------------
许多桌面应用程序会有这样的一个功能,例如word,在你修改一个文档之后,未点击保存,就直接点击关闭按钮,这时word会提示你有文档内容有改动,真的要关闭吗?

其实在web应用程序中,我们也可以模拟实现这样的功能,那就是在窗口关闭前事件(window.onbeforeunload)中加以处理:

  

  function GetChangeStatus(objName) {
$("#" + objName).val("true");
} //当onChange事件触发时,设置相应隐藏域的值为true,说明文本输入框里的内容有所改变了.


  

  var clientW, clientH;
window.onbeforeunload = function(evt) {
if ($("#SmallChanged").val() == "true") {
evt = evt || window.event;
if (window.event) {
if (evt.clientX > document.documentElement.clientWidth && evt.clientY < 0 || evt.altKey)
evt.returnValue = "Do you want to leave this page without saving?";
}
else {
if (clientH < 222)
evt.returnValue = "Do you want to leave this page without saving?";
}
}
}

document.onmousemove = function(e) {
e = e || window.event;
if (e != window.event) {
clientW = e.pageX;
clientH = e.pageY;
}
}


注意: 点击"刷新"按钮,window.onbeforeunload会也触发的,所以我们需要判断鼠标的位置是否在浏览区域的外面,即大于clientWidth和clientY小于0;另外,在firefox浏览器中要通过鼠标移动事件来获取pageX,pageY,而firefox浏览器中的pageY很特殊,没有负数(写兼容firefox的javascript极其不容易!),所以不可能小于0,所以我们只能大概规定小于某个数值的区域就是"关闭"按钮所在位置,超过这个区域的刷新动作不会触发提示.