我有一個應用程序在點擊一個鏈接時打開一個新窗口。這產生了一個包含Java小程序的頁面。我遇到的問題是單擊相同的鏈接重新加載頁面,該頁面會重置Java應用程序。有什麼辦法來捕捉這個?兩種解決方案是可以接受的是:JavaScript window.open只有當窗口不存在時
- 允許多個窗口從單擊處理程序中打開
- 忽略後續請求,如果窗口已經打開
道歉是一個Javascript新手 - 這是不是我的主要事情。
連接到處理程序的代碼是
function launchApplication(l_url, l_windowName)
{
var l_width = screen.availWidth;
var l_height = screen.availHeight;
var l_params = 'status=1' +
',resizable=1' +
',scrollbars=1' +
',width=' + l_width +
',height=' + l_height +
',left=0' +
',top=0';
winRef = window.open(l_url, l_windowName, l_params);
winRef.moveTo(0,0);
winRef.resizeTo(l_width, l_height);
}
編輯:
感謝您的答覆 - 我修改的建議,稍微讓我可以通過功能打開了多個URL。
EDIT2: 有一個在Check for a URL open on another window
var g_urlarray = [];
Array.prototype.has = function(value) {
var i;
for (var i in this) {
if (i === value) {
return true;
}
}
return false;
};
function launchApplication(l_url, l_windowName)
{
var l_width = screen.availWidth;
var l_height = screen.availHeight;
var winRef;
var l_params = 'status=1' +
',resizable=1' +
',scrollbars=1' +
',width=' + l_width +
',height=' + l_height +
',left=0' +
',top=0';
if (g_urlarray.has(l_url)) {
winRef = g_urlarray[l_url];
}
alert(winRef);
if (winRef == null || winRef.closed) {
winRef = window.open(l_url, l_windowName, l_params);
winRef.moveTo(0,0);
winRef.resizeTo(l_width, l_height);
g_urlarray[l_url] = winRef;
}
}
或者乾脆(winref || winref.closed || winref.document!):如果( !newWindow || newWindow.closed) – 2009-02-09 16:16:45
如果這個窗口已經打開並且沒有加載新的URL,那麼這個窗口沒有關注 – SCC 2014-03-08 12:12:19