各位,在我尝试写这篇文章之前,请放心,我在所有 chrome/firefox 和 IE 中尝试过 onbeforeunload 事件,它在 IE 和 Firefox 中工作正常,但在 chrome 中失败。
然而,在一个实例中,我注意到我能够将 ajax 调用异步设置为 false,但这对于跨站点 ajax 调用来说效果不佳。
给出我正在尝试做的事情的背景...我正在尝试使用 jquery 构建一个用于自动化测试的记录和回放 js 引擎,并且我正在使用 $.ajax 进行回调。
您可以在此处找到演示
http://orgchartasp.net/jtest/ff.swf.html
我正在做的是,捕获客户端上的所有事件并在 onbeforeunload 事件上发回服务器,我最终在 IE 和 FF 上成功通过在卸载前打开一个模式窗口并在保存后将其关闭。
有没有人真正成功地完成了 onbeforeunload 跨浏览器/跨站点,如果是,请帮助我。
最佳答案
onbeforeunload
事件的问题是,在当前窗口中将任何内容发送回服务器已经太晚了。引发该事件的操作,即浏览器即将加载新页面,已经决定了接下来要加载的页面。
处理此事件时浏览器的确切行为可能会有所不同,因为直到 HTML5 之前它才出现在任何标准中。
如果您想从事件中向服务器发送任何内容,您必须打开一个新窗口并从中发布,或者进行 AJAX 调用。不过,这是一种“一劳永逸”的方式,因为您迫不及待地等待任何响应。
我想说,您不应该依赖 onbeforeunload
来可靠地工作,因此您不应该围绕它构建架构。
关于javascript - onbeforeunload 在所有浏览器中的无缝行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561345/