在onbeforeload事件时确认两次调用警报

时间:2011-05-25 04:56:24

标签: jquery onbeforeunload confirm

我在beforeload事件上有一个确认框 - 代码如下:

window.onbeforeunload = function(){
            //alert('leaving ... ' + is_edited );

            if (is_edited == true) {
                return confirm('Are you sure you want to navigate away from this page? \n\n Press OK to continue, or Cancel to stay on the current page.');
            }

        };

问题在于 - 确认警报显示两次。我搜索了stackoverflow,并对此问题提出了很多疑问。但我的有点不同。它显示两次不同的确认警报。对于FF,消息是相同的,但对于第二个确认框中的Crome,消息为false

提前致谢。

2 个答案:

答案 0 :(得分:1)

“onbeforeunload”处理程序应该返回一个字符串。是否向用户显示字符串取决于浏览器。

你的函数返回“confirm()”调用的结果,一个布尔值。 Firefox 4确实显示“beforeunload”处理程序返回的字符串,而其他浏览器仍然这样做。因此,您的函数会弹出一个“确认”框,获取结果并返回它。浏览器然后提出“beforeunload”确认,在某些浏览器的情况下将包含从处理程序返回的字符串值(“true”或“false”)。

Here是该事件及其处理程序的Mozilla文档。

答案 1 :(得分:0)

最好在这里使用jQuery来实现跨浏览器功能。

jQuery UI Dialog OnBeforeUnload