2017-04-15 52 views
0

我試圖更新標題中的值,當用戶單擊我的頁面/標籤以通知新消息以及他何時回到標籤以重置該值爲0.由於某些原因,即使將用戶再次激活選項卡時,即使將其設置爲0,值也始終遞增,即使該函數的其餘部分已正確執行,將document.title更改爲「聊天」 。每次收到新消息時更新標題中的值

$(document).ready(function(){ 
    var unreadMessages = 0; 
    var ws = new WebSocket("ws://localhost:8080/ws"); 
    ws.addEventListener("message", function(e){ 
    createMessage(e.data); 
    unreadMessages = updateNotification(unreadMessages); 

    }); 
}); 

function updateNotification(unreadMessages){ 
    unreadMessages++; 
    $(window).blur(function(){ 
    if(unreadMessages>0){ 
     document.title = "("+ unreadMessages + ") Chat"; 
    } 
    }); 
    $(window).focus(function(){ 
    unreadMessages=0; 
    document.title = 'Chat'; 
    }); 
    return unreadMessages; 
} 
+1

您每次調用函數updateNotification時都會爲'blur'和''focus'創建**新的**事件處理函數 –

回答

0

你的整個結構是錯誤的,不能這樣工作。像@ mpf82評論說,每次收到消息時都不要設置新的事件處理程序。試試這樣的:

$(document).ready(function(){ 
    var unreadMessages = 0; 
    var blurred = false; 
    var ws = new WebSocket("ws://localhost:8080/ws"); 
    ws.addEventListener("message", function(e){ 
    createMessage(e.data); 
    if(blurred) document.title = "("+ ++unreadMessages + ") Chat"; 
    }); 
    $(window).blur(function(){ 
    blurred = true; 
    }); 
    $(window).focus(function(){ 
    document.title = 'Chat'; 
    blurred = false; 
    unreadMessages = 0; 
    }); 
}); 
相關問題