我有一个应用程序,在单击链接时会打开一个新窗口。这会生成一个包含 Java 小程序的页面。我遇到的问题是单击相同的链接会重新加载页面,从而重置 Java 应用程序。有什么办法可以捕获这个吗?可以接受的两种解决方案是:
- 允许从点击处理程序打开多个窗口
- 如果窗口已经打开,则忽略后续请求
为成为 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;
}
}