在父页面定时为子页面添加引用 var c_win = window.open(url

时间:2021-11-08 06:55:42

项目使用的是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东西即可。