用户导航时触发事件

我需要调用一个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只是作为额外的预防措施,但不作为主要机制。 众所周知会引起问题。