javascript中从子窗口刷新父窗口

2023-12-13

我已经寻找了一段时间,找不到适合我需求的答案。我有一个页面弹出一个窗口(window.open),让用户登录(创建cookie,设置会话),然后重定向到另一个页面。当模态重定向时,我想刷新父页面,这样我刚刚做的所有好东西都会被父页面识别。我尝试过 window.opener 之类的东西。有人可以帮我一点吗?谢谢


window.opener在弹出窗口中将引用window打开窗口的对象,所以当然你应该能够调用window.opener.location.reload();。只要你不触犯同源政策,弹出窗口可以调用脚本并操作父窗口对象上的属性,就像父窗口中的代码一样。

这是一个活生生的例子演示子级回调父级上的函数,并直接操作父级。下面引用了完整的代码。

但那个例子没有做到exactly你说的,所以我已经也做了这个,让孩子通过以下方式刷新父页面window.opener.location.reload().

第一个实例的父代码:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Parent Window</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
</style>
</head>
<body>
  <input type='button' id='btnOpen' value='Open Window'>
  <div id='display'></div>
</body>
<script type='text/javascript'>
  (function() {
    var btnOpen = document.getElementById('btnOpen');
    btnOpen.onclick = btnOpenClick;

    function btnOpenClick() {
      window.open('http://jsbin.com/ehupo4/2');
    }

    // Make the callback function available on our
    // `window` object. I'm doing this explicitly
    // here because I prefer to export any globals
    // I'm going to create explicitly, but if you
    // just declare a function in a script block
    // and *not* inside another function, that will
    // automatically become a property of `window`
    window.callback = childCallback;
    function childCallback() {
      document.getElementById('display').innerHTML =
          'Got callback from child window at ' + new Date();
    }
  })();
</script>
</html>​

(你不have像我上面那样使用作用域函数,但保留全局变量很有用。)

第一个实例的子代码:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Child Window</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
</style>
</head>
<body>
  <p>I'm the child window</p>
</body>
<script type='text/javascript'>
  if (window.opener) {
    // Call the provided callback
    window.opener.callback();

    // Do something directly
    var p = window.opener.document.createElement('p');
    p.innerHTML = "I was added by the child directly.";
    window.opener.document.body.appendChild(p);
  }
</script>
</html>​
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript中从子窗口刷新父窗口 的相关文章

随机推荐

  • 为什么Java中的抽象类有构造函数? [复制]

    这个问题在这里已经有答案了 为什么一个abstractJava 中的类有一个constructor 它正在构造什么 因为我们无法实例化abstract class 有什么想法吗 Java 中的构造函数实际上并不 构建 对象 它用于初始化字段
  • UIDatePicker 和 NSDate

    我有一个从 UIDatepicker 获得的 NSDate IBOutlet UIDatePicker dueDate NSDate selectedDate dueDate date 我如何检索月份dueDate以一个int 1 月为 1
  • bash 查找,仅删除文件 - 参数顺序

    假设今天是 4 月 8 日 我在 bash 中执行以下命令 cd tmp mkdir hello touch d 2015 04 01 hello 然后 假设我想删除 tmp 中超过一天的所有文件 但不删除目录 然后执行以下命令 find
  • 如何使用 FastAPI 获取包含空白值的键的查询参数?

    我想处理一个用例 其中将密钥传递给GET请求的查询参数 但是without一个值 For example request through Postman 在上述情况下 name被传递为key but no value is set 我尝试使
  • R8 将抽象类的“受保护”方法更改为“公共”方法,不带 -allowaccessmodification 标志

    我对 R8 有疑问 在MyLib我有公开摘要MyLibsClass其中我有受保护的方法 MyChildClass延伸自MyLibsClass in MyApp在 R8 的魔法之后 所有受保护的方法 包括受保护的抽象 MyLibsClass都
  • 从另一个非静态方法调用非静态方法

    Given myClass下面和非静态方法run 下面的代码行是有效的 new myClass move 然而 这也是有效的 move 我理解第一次尝试 new myClass move 创建该类的实例 然后调用它的方法 第二次尝试是否也隐
  • 如何在代码突出显示活动行时保持初始单元格颜色

    我有这个工作簿代码 Private Sub Workbook SheetSelectionChange ByVal Sh As Object ByVal Target As Range toggles worksheet colors co
  • 如何更改android中tabhost的字体大小

    如何更改选项卡的字体大小 我为选项卡扩展了 TabActivity 您可以定义主题 使用样式来实现此目的 首先创建主题 名称 CustomTheme 为您Activity在你的res values styles xml
  • 将对象上传到 Amazon s3 时如何为其设置 ACL?

    我可以将图像从 Android 上传到 Amazon s3 但它们始终是私人的 没有人可以展示它们 我必须在 Amazon s3 管理控制台上公开它 我无法在上传图像时为其设置 ACL 我了解到 有两种方法可以将图像从Android上传到A
  • 在每行列之间插入零的行和列

    如果我有一个MxN矩阵 我如何在matlab中原始矩阵中的每隔一列 行之后添加 而不是替换 一行零和一列零 实际上结果将是 2Mx2N 您可以通过以下方式进行操作 不要添加新的行和列 而是创建一个空矩阵并填充原始矩阵中的元素 创建一个具有维
  • 正则表达式在 VS Code 中查看后面?

    我正在 VS Code 中开发语法扩展 但在查看正则表达式模式背后遇到了困难 给定以下字符串 我只想返回cmp当它前面是 fmt fmt cmp foo 我在另一个编辑器中使用的匹配字符串是这样的 lt fmt w 但是 这在 VS Cod
  • 如何使用abs使搜索菜单项在操作栏中显示完整视图

    我在操作栏中有五个操作菜单项 我正在使用操作栏 sherlock 库 如下所示 In onCreateOptionsMenu 我使用了以下代码 menu add 0 1 0 Settings setShowAsAction MenuItem
  • LinkedIn SDK 位码 iOS 9

    适用于 iOS 的 LinkedIn SDK 仍然不支持 Bitcode 什么时候可以使用 有什么办法可以解决 iOS 9 上的这个问题吗 到目前为止 我已经尝试在 pbxproj 文件上禁用 Bitcode 支持 但这对于整个项目来说并不
  • Android Studio Youtube 导入存在问题。 “无法解析 YouTubePlayerSupportFragment”

    我正在尝试使用 Android Studio IDE 在应用程序中开发 YouTube 功能 这是我目前的代码 The issue is surrounding the imports Now I have the JAR file imp
  • 将 int 格式设置为电话号码

    有没有办法可以将例如 0000000000 格式化为 000 000 0000 我正在返回一个列表框 其中包含尚未格式化的电话号码集合 我想要的是格式化它 这就是我在视图中的内容 并从控制器 ViewData phoneList new S
  • C++ - 编译器如何决定以引用类型作为参数的重载函数?

    在学习 C 时 我遇到了转换序列这一复杂的主题 并且遇到了一个我自己无法解决的问题 void g const double std cout lt lt void g const double lt lt std endl void g c
  • 来自线程池的 QNetworkAccessManager

    一个非常基本的问题 该文档提到 所有方法QNetworkAccessManager是可重入的 如果是这样 正在执行get 方法在一个QRunnable没有锁合法吗 我的代码看起来像这样 class MyClass public QRunna
  • 给定两个目录树,如何找出哪些文件的内容不同? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 如果我想找到两个目录树之间的差异 我通常只需执行 diff r dir1 dir2 这准确地输出了相应文件之间的差异 我只想获取内容不同的相应文件的列表 我认为这只是将命令行选项传递
  • 如何仅序列化 Jackson 孩子的 ID

    使用 Jackson fasterxml jackson 2 1 1 时是否有内置方法仅序列化孩子的 id 我们想发送一个Order通过 REST 有一个Person参考 然而 person 对象非常复杂 我们可以在服务器端刷新它 所以我们
  • javascript中从子窗口刷新父窗口

    我已经寻找了一段时间 找不到适合我需求的答案 我有一个页面弹出一个窗口 window open 让用户登录 创建cookie 设置会话 然后重定向到另一个页面 当模态重定向时 我想刷新父页面 这样我刚刚做的所有好东西都会被父页面识别 我尝试