window.opener引用为null的解决办法

项目使用的是iframe来包含新打开的页面,在使用IE的时候,通过window.open打开子页面之后,在子页面是可以获取到打开窗口的父页面的引用,但是在使用firefox与chrome的时候,却无法获得。而且使用window.close也无法关闭弹窗。针对这2个问题,找到了以下的解决办法,有更好的解决办法:

一、解决window.opener返回结果为null的问题

1、通过interval,在父页面定时为子页面添加引用

var c_win = window.open(url, "pageName", "feathers");//参数根据API填写
var intervalTemp = setInterval(function () {//设置一个interval,每隔1s去执行一次,为子页面添加opener属性值,获取到子页面已经关闭,则清除interval
        if ("complete" == c_win .document.readyState) {
            c_win .opener = window;
        }
        if (c_win .closed) {
            clearInterval(intervalTemp);
        }
}, 1000)

2、为父页面window添加属性

这个方法就是为父页面添加一个属性,当子页面需要去获取父页面的引用时,只需要获取顶级窗口,遍历页面的所有iframe,获取到window.openPage为指定参数的window。在子页面关闭时需要清空属性。

window.open(url, "pageName", "feathers");//参数根据API填写
window.openPage = "thisIsOpener";

二、解决window.close失败的问题

在iframe中打开的窗口,在firefox与chrome中无法关闭,具体原因没有找到,后来直接使用移除DOM对象的方法来关闭窗口。步骤就是在顶级窗口中,获取当前窗口所在的DOM对象,移除此DOM对象即可。

原文地址:https://www.cnblogs.com/keitsang/p/8183417.html

时间: 2024-11-07 07:36:01

window.opener引用为null的解决办法的相关文章

java--struts--result is null的解决办法

一般情况下如果出现连续跳转的时候,经常会出现result is null的问题,这主要是由于action的type默认类型redirect导致的, 我们只需要在出错的action中指定type="chain"即可. 例如: (一般写法:用于同一命名空间的action之间跳转时) <span style="font-size:18px;"> <!-- 跳转到命名空间/admin --> <action name="toAdmin

window.open()方法被拦截的解决办法

JS代码中,进行Ajax处理后,根据后台逻辑判断.满足一定条件时, 采用window.open() 打开新页面时,会存在浏览器拦截该网页的情况,因为window.open()是打开一个新的页面,存在跨域的问题,所以浏览器拦截. 解决办法是: ajax中将异步提交改为同步提交,即添加参数 async: false,再使用window.open()时就能解决问题 window.open()方法被拦截的解决办法

Spring注入service为null另类解决办法 工具类 一般类 静态 非controller

系统为SpringMVC框架,在开发的过程中有一些工具类需要调用下由spring管理的service层.但是一进注入不进来,报null异常: 在尝试了网上的一系列方法后,还是没有解决.网上的解决方法主要有以下几种: 1.将工具类申明为spring组件,如@controller @compent 等,在spring自动扫描包设置中将工具类所在的包加进来:  无效 2.new一个service:  无效 而且不符合spring管理: 山穷水尽后,找到了一个另类的解决办法,代码原理还不太清楚,只是大概

Activity被回收导致fragment的getActivity为null的解决办法

这两天一直被这个问题困扰,假如app长时间在后台运行,再点击进入会crash,而且fragment页面有重叠现象,让我十分不爽.研究了一天,终于明白其中的原理并加以解决.解决办法如下: 如果系统内存不足.或者切换横竖屏.或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity. 这里,假设我们继承于FragmentActivity的类为MainActivity,其中用到的Fr

Ojective-C:含有中文 导致NSURL初始化一直为null的解决办法

在学习Ojective-C过程中,需要读取文件中的内容,但发现指针变量url的值一直为nil. 代码如下: NSString *strUrl=@"file:///Users/fengziwu/Desktop/笔记.txt"; NSURL *url = [[NSURL alloc] initWithString:strUrl]; 后来发现原因:编码问题,带中文字符的文件路径导致,需要对路径进行编码处理 NSString类中有这两个方法: - (nullable NSString *)st

找不到引用microsoft.office.core解决办法 via mrcjiong

在控制面板中,选择"添加删除程序",找到office ,选择"更改",在对话框中选择"添加删除功能",然后选择自定义安装,添加上office工具 中的.net可编程性支持,安全起见,把excel下的,word下的此选项都添加上,然后点击"更新"按钮,更新office,完成后再回到.net开发平台. 如果以上办法无法解决的话,在打开项目引用,删除有叉标记的引用,右击选择添加引用,选择COM里面选择Microft Office 1

apache + tomcat 负载均衡模式下 getLocalAddr() 为null的解决办法

在apache + tomcat 负载均衡模式下,通过request.getLocalAddr()无法获取服务器端的ip地址,返回值为null的问题,查找了下,百度里没有有价值的回答,到官方网站上查找了下,说是: The AJP protocol only passes the web server host name and port. It does not pass the IP address. Therefore, getLocalName() will return whatever

多线程下QAxObject指针为NULL的解决办法

项目中需要对Excel进行操作,把数据中的数据写入到Excel文件中.在数据量大的情况下,操作Excel是一件费时的操作. 但是执行到下列代码时就会出现空指针的情况: 1 QAxObject *excel = new QAxObject("Excel.Application"); 2 excel->setProperty("Visible", false); 3 4 QAxObject *workbooks = excel->querySubObject

WCF 中HttpContext.Current为null的解决办法

解决WCF hosting IIS的环境中使HttpContext.Current不为NULL, 来我们传递每次请求中的Cookie 经过测试发现只要注意下面亮点就可以了: 1. 在hosting WCF的web.config中加入: <system.serviceModel>   <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/></system.serviceModel>