我的电脑连接了多个显示器。我正在开发一个在浏览器的表格中显示数据的网络应用程序。当用户单击表格的一行时,将显示一个窗口,其中包含有关所选行的详细信息。如果用户单击不同的行,则会打开一个新窗口。
我需要完成两个要求:
窗户不应该叠在另一个上面,它们应该层叠。我有适用于 Firefox 的代码,但 IE 和 Chrome 只是在同一个地方打开每个窗口,以便它们堆叠起来。如果我跟踪打开的窗口数量,我可以使用级联机制,但有更好的方法吗?
如果机器有多个显示器,那么如果带有表格的窗口在一个屏幕上,而详细信息窗口在另一个屏幕上打开,那就太好了。在我所做的任何搜索中,我都找不到任何东西。是否有一些代码可以做到这一点?
编辑:
对于@Neal:
Function newWin( mypage, myname, cascade ) {
if (!cascade) cascade = false;
if (!myname)
myname = 'DETAILS';
var w = 820;
var h = 685;
var settings = 'height=' + h + ',';
settings += 'width=' + w + ',';
if (!cascade) {
if (screen.width) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
}
else {
winl = 0;
wint = 0;
}
if (winl < 0) winl = 0;
if (wint < 0) wint = 0;
settings += 'top=' + wint + ',';
settings += 'left=' + winl + ',';
}
settings += 'scrollbars=yes,resizable=yes,menubar=yes,location=yes';
gPopupWindow = window.open(mypage, myname, settings);
// fix for IE focus
// when from ajax loaded list
// see convoy dropdownlist item click
//gPopupWindow.focus();
setTimeout(function () { gPopupWindow.focus() }, 0);
}
通过传递 true for cascade
,Firefox 允许操作系统在它想要的位置打开窗口。但是 IE 和 Chrome 总是将窗口放在同一个位置,尽管每个浏览器在屏幕上的位置不同。我希望 IE 和 Chrome 能像 Firefox 那样运行,但浏览器的差异是不争的事实。
正如我所说,我可以通过调用此函数来跟踪打开了多少个窗口,并根据该数字计算新的左上角坐标。不过,我宁愿不要。