我有一个Flash游戏,我正试图保存用户关闭浏览器标签的状态。它使用以下jquery代码:
//Called from Flash when window closes
function sendRequest(url, params) {
$.ajax({
type: "POST",
async: false,
url: url,
data: params
})
}
$(window).unload(function() {
//Make Flash attempt to save the game when the window closes.
//Flash gets the necessary data and calls sendRequest()
document["flashGame"].saveBeforeUnload();
});
我希望它能够在所有浏览器中正常运行,但最重要的是Chrome(我们的用户中很少有IE浏览器)。
Flash正在调用sendRequest(在所有浏览器中,通过警报测试),所以我不相信这些问题来自Flash,但它可能会。
答案 0 :(得分:6)
简短的回答是,你不能。
最初由Microsoft引入onbeforeunload事件以允许标准确认对话框。大多数浏览器现在支持原始形式,并且在大多数情况下允许执行简短的非交互式功能(例如,您可以在localStorage中记录您的状态)。但是,如the cross-browser jQuery API所述,这是不可靠的:
unload事件的确切处理因版本而异 浏览器版本。例如,某些版本的Firefox触发了 跟踪链接时的事件,但窗口关闭时不响应。在 在实际使用中,应该在所有支持的浏览器上测试行为, 与专有的前载事件形成鲜明对比。
由于当用户要求结束页面(以及脚本)时,有许多与执行任务相关的潜在安全问题,这可能是不可靠的,直到(以及如果)对精确进行严格的标准化工作在onbeforeunload
回调中究竟可以做些什么。
对于可预测的未来,建议不要依赖onbeforeunload
,而是使用其他方案,例如恒定背景保存或大“保存”按钮。
答案 1 :(得分:1)
试试window.onbeforeunload
。我在jQueryBug Tracker中找到了这个可能的解决方案:
window.onbeforeunload = function() { return "text"; }