是否可以在JavaScript中重用弹出窗口

是否可以在JavaScript中重用弹出窗口

本文介绍了在导航到父级别的其他位置后,是否可以在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 打开,我们就可以与 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中重用弹出窗口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 23:24