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

时间:2014-11-17 14:13:35

标签: javascript jquery jsp

我的查询是,在注销后关闭所有子窗口(如果打开)。 我正在从不同的jsps&创建子窗口我想从Search.jsp关闭它。 Search.jsp有像Create,Logout这样的按钮。

我的Search.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>

在这里,如果我点击退出按钮,那么它必须关闭所有OPEN子窗口。 我用不同的jsp创建的孩子们的窗户。 例如,从Search.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>

从Property.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创建子窗口,我可以实现这一点。仅限Search.jsp。

我的阅读材料是 -

How to close all the child pages on LogOut

How to Close multiple child windows from a parent window

同样,这仅描述窗口引用是否仅在jsp中。 所以请建议我,如何关闭所有儿童窗户,从不同的jsp创建 来自另一个jsp(Search.jsp)?

任何建议或任何其他方式来实现这一点,对我都非常有帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于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");
}