2011-09-07 153 views
-2

我想爲我的應用程序打開一個新的彈出窗口。每個彈出窗口都有一個窗口名稱。假設用戶關閉彈出窗口,他可以打開具有相同名稱的彈出窗口,請顯示現有的彈出窗口。多個彈出窗口的JavaScript問題

我寫了下面的代碼來做到這一點。但是,如果用戶關閉它,則不會打開彈出窗口,否則會打開一個新的彈出窗口。請建議如何去與此。

d='javascript:if(document.getElementsByTagName("*").length>0&&document.getElementsByTagName("body")[0].innerHTML!=""&&!confirm("You are about to navigate to home page Do you want to do that ? ")) 
{opener.display2WindowHelp();} 
else 
{window.location.replace("${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}'+d+'"); 
}'; 
b= window.open(d,"_spor_window_"+a+window.location.hostname.replace(/\./g,""),"menubar=no,scrollbars=yes,height="+screen.availHeight+",width="+screen.availWidth+",left=0,top=0,resizable=yes,toolbar=no,location=no,status=no"); 
+1

你可以解開代碼並使其可讀嗎?另外,所有這些彈出窗口都是必需的嗎?爲什麼不像jQuery UI對話框那樣? – David

回答

0

如果您需要打開任何彈出窗口,有可能有更好的方法來滿足您的要求。如果你打開幾個彈出窗口,那麼你的設計需要一個徹底的審查(考慮你的工作流程以及標籤界面是否是一個更好的選擇)。

通常的策略是保存對每個窗口的引用,然後檢查它是否仍然打開並可用於稍後重新使用,例如,

var popWin; 

function openWindow(url) { 
    var windowName = '...'; 
    var features = '...'; 

    if (!popWin || popWin.closed) { 
    popWin = window.open(url, windowName, features); 

    } else { 
    popWin.location.href = url; 
    } 
} 

如果你想打開多個窗口,那麼你需要一個策略來跟蹤你想要加載哪一個特定的資源。

您可能會發現HTML5 window(按名稱創建和導航上下文)和MDN window.open文檔有用。

+0

我也需要檢查贏同名是否打開..所以我想我不能使用此.. –

+0

@T Nina - 如何保持你的所有窗口的數組,並通過陣列循環尋找匹配名稱? – nnnnnn

+0

@T妮娜 - 我發佈的內容並不意味着它是一個不錯的粘貼解決方案,它是一個關於如何去做的暗示。正如nnnnnn所說,你需要保持對在數組或對象中打開的窗口的引用,並循環查看具有特定名稱的窗口是否已經打開。如果是這樣,請重複使用。如果沒有,則打開一個新的數組並將其添加到數組或對象中(即「...用於跟蹤要將特定資源加載到哪一個的策略」)。 – RobG