实现窗口关闭事件的最佳方法

时间:2014-03-31 16:19:20

标签: javascript vb.net

长篇故事很短 - 我试图在用户关闭窗口时提交某个表单,或者在20分钟内没有响应。

我使用此代码完成了第二次:

timeOut = setTimeout(function () {
    submitThisForm(document.forms.sendDealerInfo);
    console.log("Timed out...");
}, 600000);

对于我尝试使用此代码的第一个:

window.onbeforeunload = function() {
    submitThisForm(document.forms.sendDealerInfo);
    clearTimeout(timeOut);
    return null;
}

不幸的是window.onbeforeunload事件不会在所有浏览器中触发(例如在Chrome和Opera中)。 我还尝试过:$(window).unload(function () {...window.addEventListener("beforeunload", function (event) {... 但同样的故事 - 它们不适用于所有浏览器。

有没有办法完成我想要做的其他方式?也许会议?

2 个答案:

答案 0 :(得分:1)

正如Suman所说,所有主流浏览器都支持onBeforeUnload。但大多数(如果不是全部)浏览器不会让你在该事件中做任何事情,除了为&#34返回一个字符串;你确定要离开这个页面吗?"对话框。

然后使用onUnload您尝试在页面已卸载后提交表单,并且导航已经发生。导航离开然后被重定向到其他地方将是一种非常奇怪的用户体验。

当窗口关闭时尝试提交表单不是一种非常安全的方法。 Web浏览器可能会崩溃,用户可能会强制关闭它,互联网连接可能会被中断等等。我认为你最好的选择就是经常提交表格。可能会检测到几秒钟的空闲超时,然后提交表单?

答案 1 :(得分:0)

window.onbeforeunload适用于所有主流浏览器,例如 Chrome 1 Opera 12

支持

Browser Compability