1

我在 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.

提前致谢。

4

2 回答 2

1

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

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

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

于 2011-05-25T05:03:11.247 回答
0

您最好在此处使用 jQuery 来实现跨浏览器功能。

jQuery UI 对话框 OnBeforeUnload

于 2011-05-25T05:07:06.093 回答