用户导航时触发事件
我需要调用一个JavaScript / jQuery函数,其中包含几行代码,在用户关闭窗口/选项卡的PHP页面上或通过单击链接导航。 我已经尝试了onbeforeunload
函数但只return "blah blah blah;"
部分执行,其他一切都被忽略。 我也尝试过jQuery的.unload
方法,但由于某种原因,这段代码没有运行。
$(window).unload(function() { alert('blah blah blah'); });
请提出替代方案。 谢谢..
这是一个简单的工作示例。 无论您从unload
回调中return
什么,都将显示在浏览器弹出确认中。
在卸载之前发送Ajax请求的工作示例 http://jsfiddle.net/alexflav23/hujQs/7/
最简单的方法:
window.onbeforeunload = function(event) { // do stuff here return "you have unsaved changes. Are you sure you want to navigate away?"; };
在jQuery中:
$(window).on("beforeunload", function() { $.ajax("someURL", { async: false, data: "test", success: function(event) { console.log("Ajax request executed"); } }); return "This is a jQuery version"; });
查看浏览器的“网络”选项卡。 您将看到如何按要求发送请求。 只需发送适当的数据。
请记住,触发的所有操作必须是同步的,因此您只能为实例生成同步的ajax请求。 但是,上述内容并非完全可靠。
选择定期将用户数据备份到localStorage
并自动与服务器同步。 保持window.onbeforeunload
只是作为额外的预防措施,但不作为主要机制。 众所周知会引起问题。