代码之家  ›  专栏  ›  技术社区  ›  Wilhelm Murdoch

打开器刷新后帮助访问预先存在的窗口!

  •  2
  • Wilhelm Murdoch  · 技术社区  · 14 年前

    好吧,在这个问题上我已经无计可施了。

    首先是背景。我正在开发一个视频管理系统,在这个系统中,我们允许用户在添加新内容时上传并(可选)转换媒体文件。我们使用Java Applet作为基于浏览器的FTP客户端。

    我要做的是允许用户启动上载,然后将ftp连接实例发送到弹出窗口。此窗口将充当FTP传输进程的作业队列。这将允许用户在主界面上移动,而不必停留在原始页面上,直到完成单个文件传输。

    在大多数情况下,我都在工作,但这是个问题。如果窗口关闭,所有连接都将被删除,所有排队文件的上载过程将被取消。

    因此,如果窗口一打开弹出窗口,向队列添加内容,刷新屏幕或移动到其他页面,我将如何访问弹出窗口?

    当用户浏览原始窗口时,弹出窗口及其内容必须保持不变。原始窗口必须能够访问弹出窗口以将新作业添加到队列中。弹出窗口本身独立于打开的窗口,因此通信只在一个方向上发生:

    父级->弹出式菜单

    不是

    父级<-弹出式菜单

    window.open(空,“window_name”);在这种情况下不起作用。在使用window.open之前,我需要检查窗口是否存在。

    救命!?!?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Wilhelm Murdoch    14 年前

    解决了的!!!!

    我就是这么做的。在弹出窗口中,我添加了一个任意变量。父窗口检查是否存在此变量。如果已定义,则必须打开窗口。如果没有,则打开一个新窗口。

    这样做的方式是,我只使用window.open(空,“window_name”)打开一个非常小的浏览器窗口。如果不指定URL,它将:

    a)打开空白窗口 b)聚焦现有窗口

    然后检查变量。如果不存在,则关闭窗口并返回“false”。如果是这样,它将聚焦现有窗口并返回“true”。

    function isWindowOpen(targetWindowName)
    {
        tempTargetWindow = window.open('', targetWindowName, 'width=1,height=1');
    
        if(typeof(tempTargetWindow.thisWindowExists) == 'undefined')
        {
            tempTargetWindow.close();
    
            return false;
        }
    
        return true;
    }