0

是否可以延迟在网页上调用卸载方法的那一刻?我有 N 页,每页包含一个表格。我不希望用户点击提交按钮,所以我通过 javascript 模拟了点击隐藏的提交按钮。每次用户更改页面时都会激活此功能:

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
}

这不起作用,但如果我在 .click () 之后发出警报

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    alert("submitting form"); 
}

一切都像魅力一样。这是因为警报为表单提供了实际提交数据的时间;如果没有警报,页面会在表单提交之前卸载,因此不会保存更改。

我试图在 .click() 之后放置一个虚拟的 setTimeout

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    setTimeout(console.log("dummy"), 200);
}

但它没有用。对此的任何帮助或反馈将不胜感激。

4

1 回答 1

0

如果您使用 jquery,您可以尝试通过 ajax 保存。并且可能将异步添加为 false,不推荐,但如果保存功能真的很快,则可以在您的示例中使用。

http://api.jquery.com/jQuery.ajax/

这是我保存的方法:

var $form = $('#formId');
$.ajax({
    type: "POST",
    url: $form.attr('action'),
    data: $form.serialize(),
    error: function (xhr, status, error) {
       // error
      },
    success: function (response) {
       // sucess
     }
});
于 2013-08-30T09:09:13.170 回答