window.opener 的用法
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 的用法相关推荐
- window.opener的用法
window.opener 主要用来打开窗体的父窗体,可以通过这种方式设置父窗体的值或者调用js方法. 例如: 1,window.opener.test(); ---调用父窗体中的test()方法 2 ...
- window.opener用法
window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...
- window.opener用法(在子窗体中获得父窗体的方法)
window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...
- JS字符串 window.open() window.opener window.name window对象总结
晚上总结了一下,发上来分享: 字符串 window.open() window.opener window.name window对象等的一点总结 http://download1.csdn. ...
- window.opener方法的使用 js跨域
2019独角兽企业重金招聘Python工程师标准>>> 最近公司网站登陆加入了第三方登陆.可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.op ...
- window.opener
只要一个窗口的typeof window.opener != 'undefined', window.close()时IE就不会提示"您查看的网页正在试图关闭窗口.是否关闭此窗口?&qu ...
- js操作frame详细解说,window.opener和window.parent的区别
js操作frame详细解说,window.opener和window.parent的区别 frame框架里的页面要改其他同框架下的页面或父框架的页面就用parent window.opener引用的是 ...
- 子页面赋值给父页面:window.opener.document.getElementById
window.opener 返回的是创建当前窗口的那个父窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为" ...
- window.parent和window.opener区别
下面一段代码是关于window.parent和window.opener区别 来讲的,我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElemen ...
最新文章
- 看固态存储厂商在硝烟四起的市场中如何发展?
- 一个简单的jQuery例子,动态添加表格和删除
- MySQL存储引擎、MyISAM、InnoDB
- 《金色梦乡》金句摘抄(五)
- 探索性数据分析EDA及数据分析图表的选择
- php自定义商品属性,php – 可变产品属性:自定义每个显示的单选按钮文本值
- js获取request中的值_基于node.js的开发框架 — Koa
- 一分钱解锁全网视频会员?加入团队还能月入百万?
- 微服务最佳实践 【已翻译100%】
- C++ 指针二维数组, C++二维指针数组笔记
- CPU飙升到100%问题排查
- 英语口语收集(三十七)
- 眼保健操(UPWND公益版)保护眼睛
- 悦读 | 公布你的原则,读瑞.达利欧的《原则》
- win10怎么找工作组计算机,win10无法查看工作组的解决方法|win10系统怎么找工作组...
- 微信小程序如何设计实现
- 第五卷《鏖战雁门(下)》第41章《良夜》
- 啊 啊 啊 摆弄了半天 dreamweaver cs4终于弄成正版的啦
- 医疗数字化:区块链或成最强辅助
- CSS中vertical-align不起作用
热门文章
- 深大教授开源的人脸检测库,速度号称史上最快
- 我才是世界上最好的编程语言
- Java微框架Spring Boot 运行原理深入解读
- Java注释@interface的用法【转】
- Windows下打包maven项目,编写bat脚本,dos命令在后台运行与关闭
- Git 之fatal: remote origin already exists 错误解决办法(通俗易懂)
- linux文件目录和属性知识,Linux文件和目录属性
- #中regex的命名空间_Python命名空间实例解析
- 工商银行:IT新架构及银行IT架构转型思考
- 在linux下创立bash文件,Linux文件管理及bash特性