Javascript onBeforeUnload提示后AngularJS解除绑定,$destroy未触发

Javascript onBeforeUnload提示后AngularJS解除绑定,$destroy未触发,javascript,angularjs,memory-leaks,event-listener,onbeforeunload,Javascript,Angularjs,Memory Leaks,Event Listener,Onbeforeunload,我有一个要求,显示一个提示,每当我们的预订页面被导航离开。在应用程序中导航时,没有问题。简单的$onLocationChange可以在自定义提示下正常工作。但是,当导航到例如google或我们的注销页面(在单独的angular应用程序中)时,$onLocationChange不起作用。在本例中,我使用了: window.onbeforeunload = onUnloadAppStart; function onUnloadAppStart() { var message =

我有一个要求,显示一个提示,每当我们的预订页面被导航离开。在应用程序中导航时,没有问题。简单的$onLocationChange可以在自定义提示下正常工作。但是,当导航到例如google或我们的注销页面(在单独的angular应用程序中)时,$onLocationChange不起作用。在本例中,我使用了:

 window.onbeforeunload = onUnloadAppStart;

function onUnloadAppStart() {
        var message = figureOutWhichMessageToUse();
        return message;
}
这样我至少可以自定义导航消息,即使我不能更改提示框本身。但是,这会导致内存泄漏。所以我离开时需要设置为null。大概是这样的:

$scope.$on("$destroy", function() {
    window.onbeforeunload = null;
    }

然而,这($destroy事件)似乎只有在我在应用程序中导航时才会触发,与$onLocationChange相同。此外,我需要在提示之后清理绑定,这是在onUnloadAppStart函数之后。这是因为如果我删除了绑定,用户说“不,留在这个页面上”,现在我的“onbeforeunload”就搞糟了。有没有办法在onbeforeunload提示后启动函数?

大多数浏览器不再允许自定义消息。为什么说它会导致内存泄漏?这在javascript中不是很常见的问题吗?我正在查看开发工具中的内存选项卡。离开和重新进入页面(离开和重新进入应用程序)会导致我的内存增加,而空闲地坐在页面上会使内存保持不变。