javascript - window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

标签 javascript android angularjs google-chrome

我开发了一个简单的聊天应用程序,当有人关闭选项卡/浏览器时(基本上是当用户离开房间时),我使用 $window.onbeforeunload 通知其他用户。

这是我的代码

$scope.onExit = function() {
        $scope.chatstatus.$add({
            status: $scope.getUsername + ' left'    
        });
    };

    $window.onbeforeunload =  $scope.onExit;

这在桌面浏览器上工作得非常好,但在 Android Chrome 浏览器上却不行。 onbeforeunload 函数根本没有被触发。

请提出解决方案/解决方法。谢谢。

编辑:正如评论中提到的,这是一个已知问题,如果不是解决方案,请提出解决方法。

最佳答案

看起来您需要检查 onbeforeunload 和 onunload。

这个答案看起来是一个很好的方法。

Android Chrome window.onunload

window.onunload = window.onbeforeunload = function() {
    var guid = sessionStorage.getItem("WindowGUID");
    var tmp = JSON.parse(localStorage.getItem("WindowGUIDs"));
    tmp = tmp.remove(guid);  // remove is a custom prototype fn
    localStorage.setItem("WindowGUIDs", JSON.stringify(tmp));
});

关于javascript - window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779372/

相关文章:

javascript - Javascript正则表达式:测试文本是否仅包含一组字符

javascript - 异步函数与返回 New Promise

java - 从 JavaScript 检索数据的简单方法

Android:如何使用 RoboSpice 获取异常时返回的 JSON 对象

javascript - 分离然后附加 AngularJS 表单更改有效性状态

javascript - 远程片段上的 Bootstrap 模态 'loaded' 事件

android - 将数组传递给新 Activity

android - 注入(inject)类如何获得对注入(inject)器的引用?

javascript - Angular JS 表达式未在 Route 中求值

javascript - Angular : Uncaught ReferenceError: $cordovaSQLite is not defined