1

在我尝试写这篇文章之前,请放心,我在所有 chrome / firefox 和 IE 中都尝试了 onbeforeunload 事件,它在 IE 和 Firefox 中都可以正常工作,但在 chrome 中失败了。

然而,在一个实例中,我注意到我能够将 ajax 调用异步设置为 false,但这对于跨站点 ajax 调用并不能正常工作。

给出我正在尝试做的事情的背景......我正在尝试使用 jquery 构建一个用于自动化测试的记录和回放 js 引擎,并且我正在使用 $.ajax 进行回调。

你可以在这里找到演示

http://orgchartasp.net/jtest/ff.swf.html

我正在做的是,捕获客户端上的所有事件并将 onbeforeunload 事件发回服务器,我终于通过在卸载前打开一个模式窗口并在保存后关闭它来成功使用 IE 和 FF。

有没有人真正成功地使用 onbeforeunload 跨浏览器/跨站点,如果是,请帮助我。

4

1 回答 1

1

onbeforeunload事件的问题是在当前窗口中将任何内容发布回服务器为时已晚。导致该事件的动作,即浏览器即将加载一个新页面,已经决定了接下来要加载哪个页面。

处理此事件时浏览器的确切行为可能会有所不同,因为它甚至在 HTML5 之前还没有任何标准。

如果您想从事件向服务器发送任何内容,您必须打开一个新窗口并从中发布,或者进行 AJAX 调用。不过,这是一劳永逸的,因为您不能等待任何回应。

我会说你不应该依赖它onbeforeunload来可靠地工作,所以你不应该围绕它构建你的架构。

于 2012-09-24T08:39:21.927 回答