• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗中...

曾经的程序员。ASP.NET/C#, JavaScript, PL/SQL, T-SQL; 工具: VS2003/2005, Oracle, SQLServer; 偶尔写点CSS, 批处理.
头脑中经常有新想法, 可惜没有去实现.
Never give up.
Never get into a fight with a pig. Both of you will get dirty. But the pig actually enjoys it.
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

[JavaScript]关闭编辑窗口时提示

下面讲讲博客园采用的方案(代码直接复制博客园的)

//全局变量: 标记当前页面是否需要提示(你也可以声明是否已提交保存)
var g_blnCheckUnload = true;

//在提交保存的按钮客户端时间中调用此方法, 修改标志位为不需要提示
function BypassCheck() { g_blnCheckUnload = false; }

window.onbeforeunload
= function() {
if(g_blnCheckUnload)
//
注意: 直接return字符串, 没有window.confirm, 因为onbeforeunload事件自身会提示
return ("确认离开当前页面吗?未保存的数据将会丢失!"); 
}


页面调用:

<div class="post_block">
<a onclick="BypassCheck();return CheckInput();" id="Editor_Edit_lkbPost" class="Button" >发布</a>
<a onclick="BypassCheck();return CheckInput();" id="Editor_Edit_lkbDraft" class="Button">存为草稿</a>
<a id="Editor_Edit_lkbCancel" class="Button" href="javascript:__doPostBack('Editor$Edit$lkbCancel','')">取消</a>
</div>

注意上面加粗部分, 在提交保存按钮中调用BypassCheck()方法.

个人觉得, onbeforeunload提示在新增记录的页面使用是比较妥当的, 但如果在编辑页面, 最好视用户操作频繁程度考虑是否提示, 不然用户觉得提示过于频繁影响效率(有些页面是打开看一眼就关闭的), 而我们又很难确定用户是否已经编辑过数据未提交保存再关闭.

参考文档:

[1]onbeforeunload和onunload, http://xieyu.blog.51cto.com/213338/55796

[2]这篇有说到关于onbeforeunload和onunload的区别, http://haokong.javaeye.com/blog/578500

摘录[2]两者区别部分如下:

区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。

Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。

Onunload是无法阻止页面的更新和关闭的, 而Onbeforeunload 可以做到。

bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" onbeforeunload=" checkLeave()"> 另外还可以用来在页面关闭的时候关闭session.

posted on 2011-03-25 09:25  jes  阅读(455)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3