用户导航时触发事件

Cob*_*ear 25 javascript jquery events

我需要调用一个JavaScript/jQuery函数,其中包含几行代码,在用户关闭窗口/选项卡的PHP页面上或通过单击链接导航.我已经尝试过该onbeforeunload功能,但只有return "blah blah blah;"部件执行,其他一切都被忽略了.我也尝试过.unloadjQuery 的方法,但由于某种原因,这段代码没有运行.

$(window).unload(function() {
    alert('blah blah blah');
});
Run Code Online (Sandbox Code Playgroud)

请提出替代方案.谢谢..

fla*_*ian 22

这是一个简单的工作示例.无论你returnunload回调将显示在浏览器中弹出确认.

在卸载之前发送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?";
};
Run Code Online (Sandbox Code Playgroud)

在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";
});
Run Code Online (Sandbox Code Playgroud)

查看浏览器的"网络"选项卡.您将看到如何按要求发送请求.只需发送适当的数据.

请记住,触发的所有操作必须是同步的,因此您只能为实例生成同步的ajax请求.但是,上述内容对于任何目的都不完全可靠.

选择定期备份用户数据localStorage并自动与服务器同步.保持window.onbeforeunload作为额外的预防措施,但不作为主要机制.众所周知会引起问题.

  • 对于聚会来说很晚,但要完成此任务,您可以结合使用[onbeforeunload](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload)和[onunload](https: //developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunload).您将在onbeforeunload的返回和onunload中的任何清理中显示警告文本.如果选择停留选项,则不会调用onunload.确保在onbeforunload和onunload中使用同步调用.如果您需要帮助,可以提供一些示例. (2认同)