浏览器关闭时window.unload上的javascript警报但刷新浏览器时不应发出警报

时间:2011-06-17 12:16:08

标签: javascript javascript-events

我想在window.onunload事件中弹出一条消息。

目前用户

a)航行离开 b)关闭窗口
c)按F5或
d)按浏览器工具栏中的刷新按钮

警报将会出现。

但我需要它在用户点击浏览器工具栏刷新按钮时不发出警告。

我们添加了在用户按F5或导航时不发出警报的条件,但是当用户点击浏览器刷新按钮时也不会出现警报。

任何类型的解决方法都会很好。

1 个答案:

答案 0 :(得分:0)

我可以提供一种方法来了解用户是否点击了浏览器按钮(后退,前进,关闭浏览器等等)。我找不到任何方法来确定点击了哪个按钮, 但我希望它能帮到你。

要知道用户是否点击了浏览器按钮,请按以下步骤操作: 1.注册window.beforeunload事件。 2.在处理程序中,检查event.clientY。 3.如果event.clientY不是defiend或event.clientY< 0,那么您知道用户点击了浏览器按钮。

例如:
(您可能必须更改代码以使其适合您的问题)

function beforeUnloadHandler(eventArg)
{
   var _e = window.event || eventArg;

   // browser button click
   if (isNaN(_e.clientY) || _e.clientY < 0) 
   {
       // unload process will continue
       // and unload event will be fired
       return;
   }

   // a confirmation with 'test alert' text will appear
   // if the user clicks 'Cancel', the unload process will stop 
   // and unload event won't be fired.
   return "test alert";
}
window.onbeforeunload = beforeUnloadHandler;

此代码适用于所有主流浏览器:chrome,ff,ie9,ie8,ie7,ie6,opera 11,opera 10,safari 3,4,5。