子页面自动执行window.close()时父页面进行刷新的bug
Posted ya-tao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子页面自动执行window.close()时父页面进行刷新的bug相关的知识,希望对你有一定的参考价值。
前两天发现一个奇怪的问题:我在h5手机页面上通过window.open(url)的方式打开一个新窗口,在新窗口关闭的时候返回数据给父页面,然后新窗口自动close(),拿手机测试发现没有问题,测试通过。但是在PC端模拟的时候发现,子页面执行window.close()的时候父页面也会自动刷新,这个就很头疼了,因为测试人员很多时候都是通过PC来模拟进行测试的,每次都通过真机进行测试效率比较低。
问题分析:PC端模拟的时候并不是以新窗口的方式打开子页面的,而是在新标签页面打开的,就是因为是新标签页打开的方式导致的这个bug。之前测试的时候父页面的数据同样可以通过postMessage的方式传给子页面,所以这一点我就没有关注。
解决方案:知道是问题的原因了,剩下的就是解决了。尝试给open增加参数,name设置为"_blank"也无法达到新窗口的效果,后来对specs也进行设置了宽和高,才达到以新窗口的时候打开页面,此时再自动执行window.close(),父页面也不会自动刷新了。
以上是关于子页面自动执行window.close()时父页面进行刷新的bug的主要内容,如果未能解决你的问题,请参考以下文章
ExtJS Window.close()之后,关闭所在页面并跳转到另一个url
scripts may close only the windows that were opened by it 浏览器JS控制无法关闭当前页面