仅当标签页或网页未处于活动状态或焦点时才显示HTML5通知

时间:2016-05-17 08:07:32

标签: javascript jquery

我在聊天应用和HTML 5通知中使用了websocket。我在尝试使用HTML 5通知时,如果有来自服务器的消息以及当前页面,标签未处于活动状态或未处于焦点状态时(您还有其他内容,那么' ;不在聊天应用窗口/页面上),所以这里有来自服务器的消息

//set global var
var nnn=false,Notification = window.Notification || window.mozNotification || window.webkitNotification;

//connect to the websocket server
conn = new WebSocket('ws://mysite.com:9090');

//function for handling the message from the server
conn.onmessage = function(e) {
show_n(e.data);
}

//detect if on page/active/focus or not on page/out focus
$(window).on("blur focus", function(e) {
    var prevType = $(this).data("prevType");

    if (prevType != e.type) {   //  reduce double fire issues
        switch (e.type) {
            case "blur":
                nnn=true;
                break;
            case "focus":
                console.log("false");
                nnn=false;
                break;
        }
    }

    $(this).data("prevType", e.type);
});

//HTML 5 notification
Notification.requestPermission();
function show_n(message) {
    console.log(nnn);
    if(nnn===true){
        Notification.requestPermission(function(perm){
            if(perm==="granted"){
                var instance = new Notification(
                    "New Message", {
                        body: message
                    });
             }else{
                 Notification.requestPermission();
             }
        });
    }
}

现在,问题在于' nnn'变量在我切换标签页面或页面上总是如此,所以即使我在页面上我不想要的时候也会显示通知,据说如果我不在页面上(转到其他标签页面) ,或在浏览器的另一端做其他事情)或页面没有焦点/不活动,' nnn'变量应该设置为true,否则如果我在页面上(活动/焦点上),那么' nnn'应该设置为false。但是,如果我不显示HTML 5通知(不触发HTML 5通知事件)并记录模糊和焦点事件,则会显示“真实”#39;或者' false'哪个是对的。请提出任何想法,线索,建议,帮助和建议吗?

0 个答案:

没有答案