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;     

    }

  • 相关阅读:
    python安装
    js手机端图片弹出方法
    EL属性范围用法sessionScope等(转)
    jsp 锚定位的方式
    当input中的内容改变时触发的事件
    Java获取客户端真实IP地址
    js正则去掉所有html标签/某一特定字符
    jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change
    SELECT INTO 和 INSERT INTO SELECT
    GoogleGoogleGoogle!!!! 百度云资源
  • 原文地址:https://www.cnblogs.com/hongfu/p/4323842.html
Copyright © 2011-2022 走看看