【发布时间】:2014-08-15 15:18:50
【问题描述】:
我有一个场景,我需要打开多个弹出窗口几乎 5 。如果我使用 window.open() 方法,我可以打开多个弹出窗口,但它不会一直停留在父页面的顶部。在我打开第一个弹出窗口后,它显示在父页面的顶部。然后当我访问父页面打开第二个弹出窗口时,第一个弹出窗口位于父页面后面。有什么办法可以实现这个功能。
非常感谢任何帮助
【问题讨论】:
标签: asp.net popup window.open
我有一个场景,我需要打开多个弹出窗口几乎 5 。如果我使用 window.open() 方法,我可以打开多个弹出窗口,但它不会一直停留在父页面的顶部。在我打开第一个弹出窗口后,它显示在父页面的顶部。然后当我访问父页面打开第二个弹出窗口时,第一个弹出窗口位于父页面后面。有什么办法可以实现这个功能。
非常感谢任何帮助
【问题讨论】:
标签: asp.net popup window.open
一种方法是将窗口句柄存储在一个数组中并调用焦点方法。它适用于 IE。它在 Chrome 中不起作用,详情here
代码如下。
var popupWindowsArr = new Array();
function popupClicked() {
var title = "Test -" + popupWindowsArr.length;
var wndID = window.open("http://www.google.com", title, "height=400,width=700");
popupWindowsArr.push(wndID);
for(var i = 0; i < popupWindowsArr.length; i++) {
popupWindowsArr[i].focus();
}
}
编辑 - 在回发后将焦点放在弹出窗口上。
一种方法是将打开的窗口的名称存储在隐藏字段中并使用它。这仅在弹出 url 位于同一域中时才有效。
<asp:HiddenField ID="hdnPopupNames" runat="server" />
function popupClicked() {
var popupNames = document.getElementById('<%=hdnPopupNames.ClientID %>').value;
var wndName;
if (popupNames.length > 0) {
var namesArr = popupNames.split("|");
wndName = "Test -" + namesArr.length;
for (var i = 0; i < namesArr.length; i++) {
var wnd = window.open("", namesArr[i]);
wnd.focus();
}
popupNames += "|" + wndName;
}
else {
wndName = "Test - 0" ;
popupNames = wndName;
}
window.open("TestHTMLPage.htm", wndName, "height=400,width=700");
document.getElementById('<%=hdnPopupNames.ClientID %>').value = popupNames;
}
【讨论】: