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学习笔记--列表
    jmeter适用python来处理接口加密
    pytest-fixture参数化params(重要)
    Python38+Robot Framework 安装ExcelLibrary一直报错,提示“dist.py:267: userwarning: unknown distribution option: ‘inst’”
    robotframework之RIED运行测试用例报错Suite ‘XXX‘ contains no tests matching name ‘XXX‘ in sin suite
    在win10上安装python3.8 + Robotframework +RIDE报错
    Pytest自动化测试 断言失败后续代码继续执行
    学习pytest+allureUI自动化记录(示例代码)
    接口测试 Pytest断言处理_assert和异常断言
    selenium有界面下正常,无界面下报错:Message: element not interactable (Session info: headless chrome)
  • 原文地址:https://www.cnblogs.com/hongfu/p/4323842.html
Copyright © 2011-2022 走看看