长篇故事很短 - 我试图在用户关闭窗口时提交某个表单,或者在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) {...
但同样的故事 - 它们不适用于所有浏览器。
有没有办法完成我想要做的其他方式?也许会议?
答案 0 :(得分:1)
正如Suman所说,所有主流浏览器都支持onBeforeUnload
。但大多数(如果不是全部)浏览器不会让你在该事件中做任何事情,除了为&#34返回一个字符串;你确定要离开这个页面吗?"对话框。
然后使用onUnload
您尝试在页面已卸载后提交表单,并且导航已经发生。导航离开然后被重定向到其他地方将是一种非常奇怪的用户体验。
当窗口关闭时尝试提交表单不是一种非常安全的方法。 Web浏览器可能会崩溃,用户可能会强制关闭它,互联网连接可能会被中断等等。我认为你最好的选择就是经常提交表格。可能会检测到几秒钟的空闲超时,然后提交表单?
答案 1 :(得分:0)
window.onbeforeunload
适用于所有主流浏览器,例如 Chrome 1 和 Opera 12