zoukankan      html  css  js  c++  java
  • window.opener

    window.opener 实际上就是通过window.open打开的窗体的父窗体。

    比如在父窗体parentForm里面 通过 window.open("subForm.html"),那么在subform.html中 window.opener

    就代表parentForm,可以通过这种方式设置父窗体的值或者调用js方法。

    如:1,window.opener.test(); ---调用父窗体中的test()方法

        2,如果window.opener存在,设置parentForm中stockBox的值。

        if (window.opener && !window.opener.closed) {

           window.opener.document.parentForm.stockBox.value = symbol;

    }

    1>window.opener 的用法

    在一般的用法中,只是用来解决关闭窗口时不提示弹出窗口,   而对它更深层的了解一般比较少。其   实   window.opener是指调用window.open方法的窗口。      在工作中主要是用来解决部分提交的。这种跨页操作对工作是非常有帮助的。 如果你在主窗口打开了一个页面,并且希望主窗口刷新就用这个,打开页面的window.opener就相当于 主窗口的window。

    主窗口的刷新你可以用 window.opener.location.reload(); 如果你用虚拟的目录:如struts的*.do会提示你重试

    你可以改成这样 window.opener.yourformname.submit() 就好了

    2〉

    在应用中有这样一个情况, 在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口

    function closeWin(){        

      hasClosed = true;         

    window.opener.location="javascript:reloadPage();";         

    window.close();      }     

    function window.onbeforeunload(){         

    if(!hasClosed){             

    window.opener.location="javascript:reloadPage();";       

       }     

    }

    上面的代码在关闭B窗口的时候会提示错误,说缺少Object,正确的代码如下:

    function closeWin(){         

    hasClosed = true;         

    window.opener.location="javascript:reloadPage();";         

    window.opener=null;         

    window.close();     

    }     

    function window.onbeforeunload(){         

    if(!hasClosed){//如果已经执行了closeWin方法,则不执行本方法             

    window.opener.location="javascript:reloadPage();";        

      }     

    }

    reloadPage方法如下:

    function reloadPage() {      

        history.go(0);         

    document.execCommand("refresh")         

    document.location = document.location;         

    document.location.reload();      }

    PS:由于需要支持正常关闭和强制关闭窗口时能捕捉到事件,用了全局变量hasClosed

    ==============================================

    补充,在父窗口是frame的时候在刷新父窗口的时候会出现问题:

    The page cannot be refreshed without resending the information. 后修改如下: window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href; 不需要执行自带的reload()方法,注意,不要再画蛇添足加上这一句:

    window.opener.parent.document.frames.item('mainFrame').location.reload();

    ======================================================================================== 最后,为了同时支持刷新普通父窗口和frame父窗口,代码如下:

    function closeWin() {         

    hasClosed = true;     

    }

  • 相关阅读:
    Linux-modules software
    Vim-Vundle-plugins-scripts
    Ubuntu-1404 GDB 调试C++报错
    Objdump-查看汇编指令
    Tornado-简介
    nginx-简介
    CentOS7 + linux kernel 3.10.94 compile 简记
    2020寒假学习笔记15------Spark基础实验
    2020寒假学习笔记14------Python基础语法学习(三)
    2020寒假学习笔记13------Python基础语法学习(二)
  • 原文地址:https://www.cnblogs.com/hongfu/p/4323842.html
Copyright © 2011-2022 走看看