Asp.net 使用window.open()打开多个弹出窗口。如何使所有弹出窗口保持在顶部并访问父页面

Asp.net 使用window.open()打开多个弹出窗口。如何使所有弹出窗口保持在顶部并访问父页面,asp.net,popup,window.open,Asp.net,Popup,Window.open,我有一个场景,我需要打开多个弹出窗口几乎5。如果我使用window.open方法,我可以打开多个弹出窗口,但它不会一直位于父页面的顶部。打开第一个弹出窗口后,它显示在父页面的顶部。然后,当我访问父页面打开第二个弹出窗口时,第一个弹出窗口位于父页面后面。是否有任何方法可以实现此功能 一种方法是将窗口句柄存储在数组中,并调用focus方法。它在IE中工作,但在Chrome中不起作用 代码如下 var popupWindowsArr = new Array(); function popupClic

我有一个场景,我需要打开多个弹出窗口几乎5。如果我使用window.open方法,我可以打开多个弹出窗口,但它不会一直位于父页面的顶部。打开第一个弹出窗口后,它显示在父页面的顶部。然后,当我访问父页面打开第二个弹出窗口时,第一个弹出窗口位于父页面后面。是否有任何方法可以实现此功能


一种方法是将窗口句柄存储在数组中,并调用focus方法。它在IE中工作,但在Chrome中不起作用

代码如下

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;            
}

谢谢你的回复。但是,当页面发回时,PopupUpindowsArr不会保留弹出窗口。因此,它总是会打开当前的弹出窗口,而不是全部是。这是非常有用的。我将尝试找到一种chrome的方法。因为我们的大多数用户都使用chrome。如果你发现什么,请告诉我。@Mey当然,我会看看我是否能找到什么。如果这个答案有帮助,请接受。