如何在关闭浏览器或窗口时触发 Angularjs 事件

How to Fire Angularjs Event when close browser or window?

本文关键字:Angularjs 事件 窗口 浏览器      更新时间:2023-09-26

我想在用户关闭浏览器或窗口选项卡时使用angularjs时清除本地存储值。我尝试了以下代码。

window.addEventListener("beforeunload", function (e) {
        var confirmationMessage = "'o/";
        alert("exit");
        (e || window.event).returnValue = confirmationMessage; //Gecko + IE
        return confirmationMessage;                            //Webkit, Safari, Chrome
    });

在上面的代码中,它在刷新页面并关闭页面时询问确认警报消息。但是我想在关闭浏览器/窗口选项卡时触发angularjs事件,而无需询问确认消息。

在我参与的最后一个项目中,我使用了以下代码:

$window.onbeforeunload = function (event) {
    if (self.form.$dirty) {
        return 'You have made changes, but you did not save them yet.'nLeaving the page will revert all changes.';
    }
}

首先,它执行检查以查看表单中的数据是否已更改。如果是这样,当用户尝试关闭窗口或转到另一个 url 时,将显示一个弹出窗口,指出存在未保存的更改。

因此,

在这种情况下,您可以访问控制器,因此所有角度事件都应该能够触发。

这个对我有用,但你需要注意,自定义消息在大多数浏览器(如chrome,IE,Firefox)中不起作用。

window.onbeforeunload = () => {
     return 'Are you sure you want to leave without saving?';
}

当用户刷新或关闭选项卡或窗口时,这将触发,并显示浏览器默认消息。

我已经尝试过这段代码,它对我有用!

      window.onbeforeunload = close;
                function close(){
                    // do something...
                    localStorage.clear();
                    sessionStorage.clear();
                   return null;
                }