子页面自动执行window.close()时父页面进行刷新的bug

前两天发现一个奇怪的问题:我在h5手机页面上通过window.open(url)的方式打开一个新窗口,在新窗口关闭的时候返回数据给父页面,然后新窗口自动close(),拿手机测试发现没有问题,测试通过。但是在PC端模拟的时候发现,子页面执行window.close()的时候父页面也会自动刷新,这个就很头疼了,因为测试人员很多时候都是通过PC来模拟进行测试的,每次都通过真机进行测试效率比较低。

问题分析:PC端模拟的时候并不是以新窗口的方式打开子页面的,而是在新标签页面打开的,就是因为是新标签页打开的方式导致的这个bug。之前测试的时候父页面的数据同样可以通过postMessage的方式传给子页面,所以这一点我就没有关注。

解决方案:知道是问题的原因了,剩下的就是解决了。尝试给open增加参数,name设置为"_blank"也无法达到新窗口的效果,后来对specs也进行设置了宽和高,才达到以新窗口的时候打开页面,此时再自动执行window.close(),父页面也不会自动刷新了。

原文地址:https://www.cnblogs.com/ya-tao/p/10446368.html

时间: 2024-10-15 04:42:42

子页面自动执行window.close()时父页面进行刷新的bug的相关文章

js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法

今天写代码时发现同一页面多个地方需要调用同一个子页面,如果多个方法调用时,同一子页面回调父页面方法则会出问题,所以查了下资料,让这个功能通用化,根据具体方法回调具体父页面方法,顺便总结一下,希望以后可以有用,或许可以帮助需要帮助的人 这里使用 eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 父页面调用子页面的路径(子页面的路径)如下 http://localhoust:8080/oss-portlet/html/util/area

使用window的open方法实现子页面向父页面传值。

有时候我们会需要弹出一个子页面进行级联选择数据,并把选择好的数据填充到父页面. 此时一种简单的方法就是通过window.open()打开一个子页面,子页面提交的时候触发事件,在事件里将子页面填写的数据填充到父页面的方法是: window.opener.document.getElementById("父页面元素的id").value = '子页面填写的值';这个赋值方法仅适用于通过window.open()方法打开的父子页面.切勿使用于其他框架. 原文地址:https://www.cn

Iframe父页面与子页面之间的相互调用

iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象 Demo1 父页面fu.html: <!DOCT

Iframe父页面与子页面之间的调用

专业词语解释如下:     Iframe:iframe元素是文档中的文档.     window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象.

iframe子页面内刷新父页面中另一个iframe子页面

框架页面如下: <div id="aa" style="float: left; height: 500px; border-right-style: solid; border-right-color: #CCCCFF; border-right-width: 2px;"> <IFRAME id="tree" name="tree" src="/ScienProjectWeb/commonjsp/

在IFream中,子页面调用父页面的方法

工作中遇到的具体情况是,父页面中的菜单点击,在框架中打开子页面.子页面保存新增的数据后,打开父页面的另一个子页面,此时要调用父页面菜单点击事件. var _parent = window.parent; //获得父页面的对象 _parent.父页面中的方法

多线程 创建子父线程 保证一件事 子线程执行三次后 父线程执行5次 循环10次

package Thread; /** * 创建子父线程 保证一件事 子线程执行三次后 父线程执行5次 循环10次 * 父线程main线程则为Console台项目的主线程 * 在main线程中调用了start线程则为子线程 * */ public class FatherAndSonTest { public static void main(String[] args) { final FatherAndSon fs = new FatherAndSon(); new Thread(new R

js中子页面父页面方法 变量相互调用

(1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面  之后的操作和在父页面中写代码一样写 window.parent.aa();//调取aa函数 window.parent.bb;//调取bb变量 例如:想在子页面中得到id为aaa的文本框的值 window.parent.$("#aaa").val();//这种写法的前提是引用了jquery window.parent.getElementById(&qu

js中子页面父页面方法和变量相互调用

(1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面 之后的操作和在父页面中写代码一样写 window.parent.aa();//调取aa函数 window.parent.bb;//调取bb变量 例如:想在子页面中得到id为aaa的文本框的值 window.parent.$("#aaa").val();//这种写法的前提是引用了jquery window.parent.getElementById(&quo