Is it possible to reuse a popup window in JavaScript after navigating elsewhere in the parent?(在父级中导航到其他地方后,是否可以在 JavaScript 中重用弹出窗口?)
问题描述
假设我们有一个网站,您在其中单击一个按钮,并使用 JavaScript 打开一个弹出(子)窗口.所以让我们称父级A和弹出窗口P.在 A 的源代码中,我们会看到如下内容:
Suppose we have a website in which you click on a button, and that opens a popup (child) window using JavaScript. So let's call the parent A and the popup P. In the source of A, we'd see something like this:
<script type="text/javascript">
P = window.open('P.html', 'P');
</script>
所以只要 A 是打开的,我们就可以在 JavaScript 中使用 P
变量与 P 进行交互.但是,当我单击 A 中的链接转到 B.html
时,我会丢失所有变量.然而我的弹出窗口仍然打开,所以我想知道是否有任何方法可以将两者重新连接在一起.有什么方法可以从 B 中操纵 P 吗?非常感谢.
So as long as A is open, we can interact with P in JavaScript using the P
variable. However, when I click on a link in A to go to B.html
, I lose all the variables. Yet my popup window is still open, so I wonder if there's any way I can link the two back together. Is there any way I can manipulate P from within B? Thanks much.
推荐答案
我发现,令我惊喜的是,答案是肯定的.Mohammad 使用 window.top
的解决方案不正确;当我尝试从 P 中访问 window.top
时,它只会返回对 P 本身的引用.RobG 的回答有点没抓住重点.
Well I figured out that, to my pleasant surprise, the answer is YES. Mohammad's solution of using window.top
was not correct; when I try to access window.top
from within P, that just returns a reference to P itself. RobG's answer just kind of missed the point.
我发现如果我在 P 内部定期执行此操作,一切正常:
I found that if I do this periodically from within P, everything works:
<!-- A.html, B.html -->
<script type="text/javascript">
function setP(ref)
{
P = ref;
}
</script>
<!-- P.html -->
<script type="text/javascript">
function updateParent()
{
if ( typeof window.opener.setP == 'function' ) {
window.opener.setP(window);
}
}
window.setInterval(updateParent, 2000);
</script>
这样,即使当我将父窗口从 A 导航到 B 时,B 仍将使用对 B 的窗口引用进行更新strong>P,一旦建立,两个窗口就可以再次自由地相互通信了.
This way, even when I navigate the parent window from A to B, B will still be updated with a window reference to P and once that's established the two windows can then communicate freely with each other again.
这篇关于在父级中导航到其他地方后,是否可以在 JavaScript 中重用弹出窗口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在父级中导航到其他地方后,是否可以在 JavaScript 中重用弹出窗口?


- Fetch API 如何获取响应体? 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Flexslider 箭头未正确显示 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01