当请求另一个window.open时,window.close当前窗口

时间:2015-11-17 15:43:14

标签: javascript jquery window.open window.closed

感谢您抽出宝贵时间来查看我的问题。

我有两个不同的window.open请求,具体取决于用户是否点击了移动按钮或网络摄像头按钮。

  • 点击移动按钮时, mobcamWindow 将以特定(小)尺寸打开

  • 单击网络摄像头按钮时, webcamWindow 将以不同(大)的尺寸打开

这些窗口打开正常并且尺寸正确,但是如果在(较小的) mobcamWindow 打开时单击网络摄像头按钮,我想要当前的 mobcamWindow 关闭,新的(较大的) webcamWindow 打开(尺寸正确),反之亦然。

目前,窗口未关闭,但网址将更改为正确的 mobcamWindow & webcamWindow ,但窗口将保持相同的大小。

我试过做window.resize但是没有用,window.close也不起作用。

我的代码如下。 (我有两个功能来处理每个 mobcamWindow &amp; webcamWindow ,每个都有一个IF语句来检查 mobcamWindow webcamWindow < / strong>已打开,如果是,则关闭它。

var webcamWindow = null; // global variable
var mobcamWindow = null; // global variable

function openStreamPopupWebcam(elem) {

  if(webcamWindow == null || webcamWindow.closed)
  /* if the pointer to the window object in memory does not exist
     or if such pointer exists but the window was closed */

  { 

    if(mobcamWindow){
      mobcamWindow.close();
    }
    /*if mobile window is open, close mobile window*/

    webcamWindow = window.open(elem.href, "window", "width=470,height=320,resizable,status").focus();
    /* then create it. The new window will be created and
       will be brought on top of any other window. */

  }

}

function openStreamPopupMobile(elem) {

  if(mobcamWindow == null || mobcamWindow.closed)
  /* if the pointer to the window object in memory does not exist
     or if such pointer exists but the window was closed */

  { 

    if(webcamWindow){
      webcamWindow.close();
    }
    /*if mobile window is open, close mobile window*/

    mobcamWindow = window.open(elem.href, "window", "width=445,height=666,resizable,status").focus();
    /* then create it. The new window will be created and
       will be brought on top of any other window. */

  }

}

如果您需要更多信息或者发现我很难理解,请询问,我会尽力解释。

谢谢。

2 个答案:

答案 0 :(得分:1)

当满足这些条件时,您必须将值重新初始化为“null”

var webcamWindow = null; // global variable
var mobcamWindow = null; // global variable
function openStreamPopupWebcam(elem){
  if(webcamWindow == null || webcamWindow.closed){
    if(mobcamWindow){
      mobcamWindow.close();
      mobcamWindow = null;
    }
    webcamWindow = window.open(elem.href, "window", "width=470,height=320,resizable,status").focus();
  }
}
function openStreamPopupMobile(elem){
  if(mobcamWindow == null || mobcamWindow.closed){
    if(webcamWindow){
      webcamWindow.close();
      webcamWindow = null;
    }
    mobcamWindow = window.open(elem.href, "window", "width=445,height=666,resizable,status").focus();
  }
}

答案 1 :(得分:0)

Teemu回答

  

为您的窗口指定不同的名称,现在两者都被命名为窗口。 - Teemu

谢谢。

还要感谢Adarsh Mohan指出应将值重新初始化为&#39; null&#39;关闭。