我有一个程序,在点击链接时会打开一个新窗口。这会生成一个包含Java applet的页面。我遇到的问题是,再次单击相同的链接会重新加载页面,从而重置Java应用程序。有没有办法解决这个问题?两个可接受的解决方案是:
连接处理程序附加的代码是什么:
- 允许从单击处理程序中打开多个窗口
- 如果窗口已经打开,则忽略后续请求
连接处理程序附加的代码是什么:
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。
编辑2: 此代码的另一个版本位于检查另一个窗口中的打开URL
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;
}
}