2012-10-25 42 views
0

創建一個小聊天應用程序,用戶可以通過點擊用戶個人資料旁邊的聊天按鈕開始聊天。檢測是否使用javascript打開新窗口

一旦有人點擊聊天按鈕,就會出現一個彈出窗口。現在我想動態檢測這個popus是否仍然打開或關閉。

如果彈出窗口打開=在通知中顯示新的消息警報。

如果彈出窗口關閉=不提醒在通知新的消息(如聊天窗口已經打開)

這是我的嘗試:

<a href="#" onclick="popitup("http://domain.com/chat/2")">Chat with user 2</a> 
    <a href="#" onclick="popitup("http://domain.com/chat/1")">Chat with user 1</a> 
// on document ready 
setInterval(function(){ 
    chkAlerts(); 
}, 10000); 

var newwindow = null; 

function popitup(url) { 
    if ((newwindow == null) || (newwindow.closed)) { 
     newwindow = window.open(url,'Buy','width=950,height=650,scrollbars=yes,resizable=yes'); 
     newwindow.focus(); 
    } 
    else { 
     newwindow.location.href = url; 
     newwindow.focus();  
    } 
} 

function chkAlerts(){ 
    if ((newwindow == null) || (newwindow.closed)) { 
     //Do something 
     alert('now window is closed show alerts'); 
    } 
} 

有了這個代碼,我總是越來越

alert('now window is closed show alerts'); 
+0

只要你知道,當重新加載或從開窗器頁面導航時,對「newwindow」的引用將會丟失。 – Jan

+0

是的,這是真正的問題,你認爲有沒有在JavaScript中的任何功能做到這一點...或者我需要玩會議或東西? – VK321

回答

0

chkAlerts將始終顯示警報作爲初始值newwindownull

假定你只想在聊天窗口關閉後才發出警報,調整邏輯忽略最初的null狀態;

function chkAlerts(){ 
    if ((newwindow != null) && (newwindow.closed)) { 
     //Do something 
     alert('now window is closed show alerts'); 
    } 
}​ 
0

你的錯誤不是在JavaScript代碼,在錨,你正在關閉調用函數內部的雙引號,它們必須是這樣的:

<a href="#" onclick="popitup('http://domain.com/chat/2')">Chat with user 2</a> 

不管怎麼說,但另外,正如你所看到的,你只是存儲最後打開的窗口,如果你的興趣是知道兩個都打開了,你應該創建一個新的窗口作爲一個數組。

乾杯,

0

自評續:

只要你知道,重裝或導航從 窗口大開眼界離開網頁的時候,要newwindow參考將會丟失。

是一月,這是實際的問題,你覺得有沒有 功能在JavaScript做到這一點...或者我需要玩弄 會議還是什麼?

甚至在會話或任何其他服務器魔法中都不可能。

如果您確實需要跟蹤聊天窗口,您的選擇是在您的「開啓者」頁面上添加聊天內容,並將其設爲內聯AJAX聊天。

您可以在所有頁面上放置AJAX偵聽器,並在網站的所有打開的選項卡/窗口上「打開」該聊天窗口,以便用戶不會丟失它的蹤跡。

相關問題