JS关闭子窗口并且刷新上一个窗口的实现示例


Posted in Javascript onMarch 10, 2020

在开发后台项目的时候产品那边提出了这个一个需求:用户点击“选择模板”的时候会弹出一个新窗口,在新窗口选择模板点击确定后,会关闭当前的新窗口,并且原来的那个窗口自动显示用户在新窗口的选择项。
这样会涉及到一个技术点,就是怎么通过JS来实现关闭子窗口并且刷新上一个窗口。

百度了很久,尝试了以下几种方案:

方案一:通过在子窗口的关闭函数中加入以下代码,即可实现父窗口的刷新。

window.opener.location.href = window.opener.location.href;

方案二:也是在子窗口的关闭函数中加入以下代码:

function closeMeAndReloadParent(){
  opener.location.reload();
  window.close();
}

以及方案三window.opener.location.reload();

方案四window.opener.reload();等等

结果发现以上方案全都不行,且都会报以下这种错误:

scrollbymyself.html:96 Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.

不知道是我实现方式有问题还是别的未知原因,没方法,需求在那里,总是需要解决的,经过亲身实践,总结出了下面这种可行方法,虽有明显缺点,但也总算了解决了需求。

父界面的代码

<span onclick="openNewWindow()">点击打开新窗口</span>
<input type="text" class="parent-input">
<script>
  function openNewWindow() {
    document.querySelector(".parent-input").focus()
    window.open("scrollbymyself.html", "new window");
  }
  document.querySelector(".parent-input").onfocus = function () {
    console.log("获取到了焦点,可以在这里写逻辑代码")
  }
  console.log("页面重新刷新")
</script>

子界面的代码

<span onclick="closeCurrentWindow()">点击关闭当前窗口,并且更新上一个窗口的信息</span>
<script>
  function closeCurrentWindow() {
    console.log(window)
    opener.location.reload();
    window.close()
  }
</script>

把上面的代码应该到项目中,即可实现需求,如果不想让input显示在界面上,可以添加opacity: 0;样式属性。

注意:

添加display: none;属性的话,并不会触发input的获取焦点的事件函数。

到此这篇关于JS关闭子窗口并且刷新上一个窗口的实现示例的文章就介绍到这了,更多相关JS关闭子窗口内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
自己开发Dojo的建议框架
Sep 24 Javascript
JS的反射问题
Apr 07 Javascript
浅析node.js中close事件
Nov 26 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
全面理解闭包机制
Jul 11 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
javascript prototype原型详解(比较基础)
Dec 26 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
小程序实现录音功能
Sep 22 Javascript
浅谈Web Storage API的使用
Jun 23 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 #Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 #Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 #Javascript
JavaScript代理模式原理与用法实例详解
Mar 10 #Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 #Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 #Javascript
vue中的使用token的方法示例
Mar 10 #Javascript
You might like
用cookies来跟踪识别用户
2006/10/09 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python常用的爬虫技巧总结
2016/03/28 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python 切分数组实例解析
2019/11/07 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
英语简历自我评价
2014/01/26 职场文书
保护环境倡议书300字
2014/05/19 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
python缺失值填充方法示例代码
2022/12/24 Python