【问题标题】:Tracking a child window across page loads跨页面加载跟踪子窗口
【发布时间】:2010-09-23 08:23:28
【问题描述】:

如果重新加载父页面,是否可以跟踪子窗口?

我目前是这样打开窗口的:

  var childWindow;
  childWindow= window.open('url...');

当我想重新打开同一个子窗口时

 childWindow.focus();

明显的问题是,如果父窗口被刷新,那么它就会失去对childWindow 的跟踪并且不能聚焦它。有什么方法可以让我恢复对子窗口的引用?

【问题讨论】:

    标签: javascript html web-applications


    【解决方案1】:

    也许您可以使用 window.open() 中使用的name 参数(第二个)在父窗口重新加载时“重新加载”您的弹出窗口...?

    【讨论】:

    • 对不起,我是个傻瓜,但是name 参数是什么意思?你能添加一个示例/元代码吗?
    • open() 方法可以带三个参数。第一个是 URL,第二个是弹出窗口的名称,第三个是选项。如果您使用相同的弹出窗口名称两次使用 open(),第一次调用将打开一个弹出窗口以显示第一个 URL,第二次调用将重新加载弹出窗口以在同一窗口中显示第二个 URL。因此,也许您每次都可以使用相同的弹出窗口名称来跟踪您的窗口;)
    【解决方案2】:

    如上所述。我没有找到如何从父窗口对象获取其子窗口的方法。可能不存在像 window.childWindows 数组或方法这样的东西。重新加载父页面后,您甚至丢失了使用 javascript 创建的所有绑定,例如 childWindow = window.open(url,'myChildWindow',opt)

    我为 FF 3.x 找到的唯一可能方法是,如果您知道要查找的子窗口的名称。在这种情况下,再次使用相同的名称打开窗口,如果它仍然打开,您应该会得到丢失的链接。在其他情况下,新窗口打开。 lostWindow = window.open('','myChildWindow','');

    现在您必须测试它是旧窗口还是新窗口。例如,通过您在子窗口中注册的某些属性。

    如果(lostWindow.myProperty == 'yes') 你可以确定这是你丢失的窗口。

    当我浏览互联网时,我发现有些人尝试使用 cookie 或在 HTML5 中使用applicationCache 创建解决方法。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 2014-11-28
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多