如何在Javascript中按名称获取窗口对象

How to get window object by name in Javascript?

本文关键字:获取 窗口 对象 Javascript      更新时间:2023-09-26

我的查询是,注销后关闭所有子窗口(如果打开)。我正在从不同的jsps创建子窗口,我想从Search.jsp关闭它。搜索.jsp具有创建,注销等按钮。

我的搜索.jsp是 -

    <%
String sessionstart = (String)session.getAttribute("sessionstart");
if(sessionstart != null)
{
%>
<body>
        <div align="center" >   <img src="images/Headerimage.png" alt=""> </img></div>

        <div id = "leftmargin" >
        <form action="Search" method="post">
            <table cellspacing="10" cellpadding="10">
                <tr >
                    <td  >Type</td>
                    <td><input type="text" name="type" value="*" required /></td>
                    <td>&nbsp;&nbsp;Name</td>
                    <td><input type="text" name="name" value="*" required /></td>
                    <td>&nbsp;&nbsp;Description</td>
                    <td><input type="text" name="description" value="*" required /></td>
                    <td></td><td></td>
                    <td><input type="submit" value="Search" /></td>
                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
                    <td><h5>    <input type="button" value="Create" onclick="Create();" /></h5>    </td>
   <td>  <h5>   <input type="button" value="Logout" onclick="Logout(); " /> </h5>    </td>
                </tr>
            </table>
        </form>
    </div>
    <%
        if (sessionset != null) {
    %>
    <div align="center" style="margin-top: 15%">
        <img src="images/DocumentManagementSplash.png" alt=""> </img>
    </div>
    <%
        }
    %>
</body>
<% 
 }
else
{
%>
<script>
window.location.replace("ietmLoginDialog.jsp");
</script>
<%  
}
%>
<script type="text/javascript">
    function Create() {
        window.open("ltIEnterCreatePartFileUpload.jsp?", "CreatePart",
                "height=140,width=350");
    }
    function Logout() { 
    var w = document.getElementsByName("mywin");
    alert("w closed :: "+ w.closed);
    alert("w name :: "+ w.name);
    alert("w open:: "+ w.open); 
        if(w.name == "mywin"){
          w.close();
        }
        window.open("ietmLoginDialog.jsp", '_self', "location=yes");
    }
</script>

在这里,如果我单击注销按钮,那么它必须关闭所有打开子窗口。我从不同的jsp创建的儿童窗口。例如,从搜索.jsp,我打开属性页,即,

<td style="width: 170px;" ><a
                            href="ltSearchDocProperties.jsp?idvalue=<%=strObjectId%>"
                            onclick="window.open(this.href, 'mywin',
'left=20,top=20,width=900,height=725'); return false;"><%=strName%></a></td>

从属性.jsp,我打开编辑jsp,即,

<h5 align="right"> 
<a href="ltSearchDocEdit.jsp?idvalue=<%=strObjectId%>" onclick="window.open(this.href, 'mywiirn','width=900,height=615,resizable=false'); return false;">Edit</a> &nbsp;&nbsp;</h5>

等等。据我所知,如果我从相同的 jsp 创建子窗口,我可以实现这一点,即。仅搜索.jsp。

我的解读是——

如何在注销时关闭所有子页面

如何从父窗口关闭多个子窗口

同样,仅当窗口引用仅在 jsp 中时,这才描述。所以请建议我,我如何关闭所有子窗口,从不同的 jsp 创建从另一个 jsp(搜索.jsp) ?

任何建议或任何其他实现这一目标的方法,都将对我非常有帮助。

提前谢谢。

由于 window.open() 返回对所创建窗口的引用,您可以将它们存储在变量中,并在注销时关闭它们:

var windowsToCloseOnLogout = [];
function create() {
    windowsToCloseOnLogout.push(window.open("ltIEnterCreatePartFileUpload.jsp?", "CreatePart", "height=140,width=350"));
}
function logout() {
    for (var i = 0, windowNb = windowsToCloseOnLogout.length; i < windowNb ; i++) {
        windowsToCloseOnLogout[i].close();
    }
    window.open("ietmLoginDialog.jsp", '_self', "location=yes");
}