Fra*_*rth 5 javascript flash jquery onbeforeunload
我有一个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();
});
Run Code Online (Sandbox Code Playgroud)
我希望它能在所有浏览器中正常工作,但最重要的是Chrome(我们的用户中没有很多人拥有IE).
Flash正在调用sendRequest(在所有浏览器中,通过警报测试),所以我不相信问题来自Flash,但它可能会.
简短的回答是,你做不到.
该onbeforeunload事件最初是由微软推出允许一个标准的确认对话框.大多数浏览器现在支持原始形式,并且在大多数情况下允许执行简短的非交互式功能(例如,您可以在localStorage中记录您的状态).但是,如跨浏览器jQuery API中所述,这是不可靠的:
卸载事件的确切处理因浏览器的版本而异.例如,某些版本的Firefox会在跟踪链接时触发事件,但不会在窗口关闭时触发.在实际使用中,应该在所有支持的浏览器上测试行为,并与专有的beforeunload事件进行对比.
由于当用户要求结束页面(以及脚本)时,有许多与执行任务相关的潜在安全问题,这可能是不可靠的,直到(以及如果)进行严格的规范化工作以确切地确定在onbeforeunload回调中完成.
对于可预测的未来,建议不要依赖onbeforeunload但使用其他方案,例如恒定背景保存或大"保存"按钮.
| 归档时间: |
|
| 查看次数: |
4994 次 |
| 最近记录: |