从子窗口重新加载父窗口

IT技术 javascript jquery
2021-03-13 16:04:19

如何使用 jQuery 重新加载我的子窗口的父窗口?

6个回答

在这种情况下不需要 jQuery。

window.opener.location.reload(false);

https://developer.mozilla.org/en-US/docs/Web/API/Window

即使参数是非标准的,它也会被忽略(w3.org/TR/Window/#location-methods),所以除非你想要默认行为,否则使用它没有坏处。
2021-04-20 16:04:19
Mozilla 参考站点提到了这一点。我想知道它是否特定于浏览器。
2021-04-24 16:04:19
在 chrome 中不起作用:未捕获的类型错误:无法读取 null 的属性“位置”
2021-04-25 16:04:19
它确实需要一个参数 - 您可以传入 true 以强制重新加载(即忽略缓存)
2021-04-30 16:04:19
是的,刚刚解决了这个问题。感谢您的解释。
2021-05-15 16:04:19

您可以使用window.openerwindow.parentwindow.top来引用相关窗口。从那里,您只需调用该reload方法(例如:)window.parent.location.reload()

但是,需要注意的是,window.opener如果您需要离开最初打开的页面,您可能会遇到问题,因为参考将丢失。

+1 标记的答案使用了 window.opener(我明白为什么这是首选方式),但我只有运气 w/window.top
2021-04-29 16:04:19
reload()不是 的方法window你的意思是window.parent.loacation.reload(),我在我的回答中有。
2021-05-04 16:04:19
如果子窗口是 iframe,则可以使用:window.parent.reload(); 或 window.parent.location.href='abc.html';
2021-05-14 16:04:19
parent.location.reload();

这应该有效。

并将可选参数设置为 true 以绕过浏览器缓存。例如 parent.location.reload(true); 参考 w3schools.com/jsref/met_loc_reload.asp
2021-04-26 16:04:19

如果你想简单地重新加载子窗口的父窗口:下面的这一行代码就足够了。

opener.location.reload(); 

如果要使用带有旧值或新值的查询字符串(请求)重新加载父窗口。以下代码将完成工作。

if (opener.location.href.indexOf('?') > 0) {
      var baseUrl = opener.location.href.substring(0, opener.location.href.indexOf('?'));
      opener.location.href = baseUrl + "?param1=abc&param2=123";
}
else {
      opener.location.href = opener.location.href + "?param1=abc&param2=123";
}

opener.location.reload();在上面的例子中不是必需的。

您可以使用以下方法重新加载父窗口位置:

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