window.opener 的用法

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

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

在应用中有这样一个情况, 
        在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; 
                <%if(null != frame){%> 
                window.opener.parent.document.frames.item('mainFrame').location.href =        window.opener.location.href; 
                <%}else{%> 
                window.opener.location = "javascript:reloadPage();"; 
                <%}%> 
                //window.opener.top.mainFrame.location="javascript:reloadPage();"; 
                //self.opener.frames.mainFrame.location.reload(true); 
                window.opener = null; 
                window.close();
        }
        function window.onbeforeunload()
        { 
                if (!hasClosed) { 
                <%if(null != frame){%> 
                window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href; 
                <%}else{%> 
                window.opener.location = "javascript:reloadPage();"; 
                <%}%> 
                window.opener = null; 
                }
        }

转载于:https://www.cnblogs.com/libran/archive/2007/12/10/2243164.html

window.opener 的用法相关推荐

  1. window.opener的用法

    window.opener 主要用来打开窗体的父窗体,可以通过这种方式设置父窗体的值或者调用js方法. 例如: 1,window.opener.test(); ---调用父窗体中的test()方法 2 ...

  2. window.opener用法

    window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...

  3. window.opener用法(在子窗体中获得父窗体的方法)

    window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...

  4. JS字符串 window.open() window.opener window.name window对象总结

    晚上总结了一下,发上来分享: 字符串 window.open()  window.opener  window.name  window对象等的一点总结  http://download1.csdn. ...

  5. window.opener方法的使用 js跨域

    2019独角兽企业重金招聘Python工程师标准>>> 最近公司网站登陆加入了第三方登陆.可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.op ...

  6. window.opener

      只要一个窗口的typeof window.opener != 'undefined', window.close()时IE就不会提示"您查看的网页正在试图关闭窗口.是否关闭此窗口?&qu ...

  7. js操作frame详细解说,window.opener和window.parent的区别

    js操作frame详细解说,window.opener和window.parent的区别 frame框架里的页面要改其他同框架下的页面或父框架的页面就用parent window.opener引用的是 ...

  8. 子页面赋值给父页面:window.opener.document.getElementById

    window.opener 返回的是创建当前窗口的那个父窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为" ...

  9. window.parent和window.opener区别

    下面一段代码是关于window.parent和window.opener区别 来讲的,我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElemen ...

最新文章

  1. 看固态存储厂商在硝烟四起的市场中如何发展?
  2. 一个简单的jQuery例子,动态添加表格和删除
  3. MySQL存储引擎、MyISAM、InnoDB
  4. 《金色梦乡》金句摘抄(五)
  5. 探索性数据分析EDA及数据分析图表的选择
  6. php自定义商品属性,php – 可变产品属性:自定义每个显示的单选按钮文本值
  7. js获取request中的值_基于node.js的开发框架 — Koa
  8. 一分钱解锁全网视频会员?加入团队还能月入百万?
  9. 微服务最佳实践 【已翻译100%】
  10. C++ 指针二维数组, C++二维指针数组笔记
  11. CPU飙升到100%问题排查
  12. 英语口语收集(三十七)
  13. 眼保健操(UPWND公益版)保护眼睛
  14. 悦读 | 公布你的原则,读瑞.达利欧的《原则》
  15. win10怎么找工作组计算机,win10无法查看工作组的解决方法|win10系统怎么找工作组...
  16. 微信小程序如何设计实现
  17. 第五卷《鏖战雁门(下)》第41章《良夜》
  18. 啊 啊 啊 摆弄了半天 dreamweaver cs4终于弄成正版的啦
  19. 医疗数字化:区块链或成最强辅助
  20. CSS中vertical-align不起作用

热门文章

  1. 深大教授开源的人脸检测库,速度号称史上最快
  2. 我才是世界上最好的编程语言
  3. Java微框架Spring Boot 运行原理深入解读
  4. Java注释@interface的用法【转】
  5. Windows下打包maven项目,编写bat脚本,dos命令在后台运行与关闭
  6. Git 之fatal: remote origin already exists 错误解决办法(通俗易懂)
  7. linux文件目录和属性知识,Linux文件和目录属性
  8. #中regex的命名空间_Python命名空间实例解析
  9. 工商银行:IT新架构及银行IT架构转型思考
  10. 在linux下创立bash文件,Linux文件管理及bash特性