我一直在四处寻找并且还没找到我一直在寻找的东西。 我的网页存储报告,用户可以保存这些报告。
我正在寻找一种方法,使用jquery或javascript onunload / onbeforeunload来询问用户是否希望保存报告,或者在浏览器关闭/导航时不继续保存。
使用onbeforeunload我可以让用户能够停止导航并手动保存,但我宁愿通过对话框完成保存。 onbeforeunload的另一个问题是点击标签也会调用onbeforeunload方法。
保存是异步的,需要几毫秒。
欢迎任何建议。
此致 Byron Cobb。
答案 0 :(得分:2)
这可能是syncronized
Ajax调用合理的唯一时间。
window.onbeforeunload = function(){
$.ajax({
url: 'somewhere',
type: 'POST',
dataType: 'text',
async: false,
data: 'you_data_here',
success: function(data){
}
});
};
这样你就可以将一些数据传输到服务器,而浏览器会阻止卸载。这有一些缺点。最明显的是,它可能不是那么棒的用户体验,这取决于要传输多少数据以及需要多长时间 另一个原因是这种方法在某些(较旧的)浏览器中不可用。
一个好的选择可能是不时或在每次行动后自动保存您的数据。
答案 1 :(得分:2)
$(document).ready(function() {
//below turns off popup on a tags, buttons, :input is for a submit in ie and img tags
$("a").click(RemoveUnload);
$("button").click(RemoveUnload);
$(":input").click(RemoveUnload);
$("img").click(RemoveUnload);
});
RemoveUnload(){window.onbeforeunload = null;}