问题描述
假设我们有一个网站,您点击一个按钮,然后使用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 打开,我们就可以与 P 变量在JavaScript中> 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 仍将使用 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中重用弹出窗口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!