Javascript 检查弹出窗口状态

Javascript 检查弹出窗口状态,javascript,Javascript,当有人请求聊天时,会在数据库中输入一个条目。我在我们的仪表板上有一个隐藏的iframe,它每20秒检查一次数据库,看看是否有聊天,如果有,就会启动一个弹出窗口。即使弹出窗口打开,iframe仍会每隔20秒刷新弹出窗口。我想尝试实现的是一个javascript来检查弹出窗口的状态。如果它是关闭的,我希望它重新打开它。。。如果它是开放的,那么它将使它成为焦点。。。但是我不希望弹出窗口刷新。。因为我有一个ajax脚本来做这件事 这是我的密码: <script language="javascri

当有人请求聊天时,会在数据库中输入一个条目。我在我们的仪表板上有一个隐藏的iframe,它每20秒检查一次数据库,看看是否有聊天,如果有,就会启动一个弹出窗口。即使弹出窗口打开,iframe仍会每隔20秒刷新弹出窗口。我想尝试实现的是一个javascript来检查弹出窗口的状态。如果它是关闭的,我希望它重新打开它。。。如果它是开放的,那么它将使它成为焦点。。。但是我不希望弹出窗口刷新。。因为我有一个ajax脚本来做这件事

这是我的密码:

<script language="javascript" type="text/javascript">
function myOpenWindow(winURL, winName, winFeatures, winObj)
{
     var theWin;
     if (winObj != null)
     {
          if (!winObj.closed)
          {
               winObj.focus();
               return winObj;
          }
     }
     else
     {
          theWin = window.open(winURL, winName, winFeatures);
          return theWin;
     }
} 
</script>
<% IF ChatSessionID <> "" THEN %>
<script language="javascript" type="text/javascript">
var gmyWin = null;
window.onload = function()
{
     var w = 900;
     var h = 500;
     var l = (screen.width-w)/2;
     var t = (screen.height-h)/2;
     var params = 'status=0,resizable=0,scrollbars=0,width=' + w + ',height=' + h + ',left=' + l + ',top=' + t;
     gmyWin = myOpenWindow("/chat/chat_window.asp?ChatSession=<%=ChatSessionID%>&id=3", "myWin", params, gmyWin)
}
</script>
<% END IF %>

函数myOpenWindow(winURL、winName、winFeatures、winObj)
{
瓦尔·特温;
if(winObj!=null)
{
如果(!winObj.closed)
{
winObj.focus();
返回winObj;
}
}
其他的
{
theWin=window.open(winURL、winName、winFeatures);
回报胜利;
}
} 
var gmyWin=null;
window.onload=函数()
{
var w=900;
var h=500;
变量l=(屏幕宽度-w)/2;
变量t=(屏幕高度-h)/2;
变量参数='状态=0,可调整大小=0,滚动条=0,宽度='+w+',高度='+h+',左侧='+l+',顶部='+t;
gmyWin=myOpenWindow(“/chat/chat_window.asp?ChatSession=&id=3”,“myWin”,params,gmyWin)
}
如果您能提供任何帮助,我们将不胜感激

致以最良好的祝愿,
Paul

gmyWin.onunload
上注册回调我不确定,但我相信如果您在调用window.open时命名窗口(例如,
myWin
),然后再次使用相同的名称调用window.open,如果已经打开或打开/重新打开窗口,它将返回现有窗口,并返回该窗口的句柄

编辑 啊,你看,从:

如果有一个窗口名为 strWindowName已经存在,那么, 而不是打开一个新窗口, strUrl被加载到现有的 窗户。在本例中,返回值 该方法的一部分是现有窗口 并忽略strWindowFeatures。 为strUrl提供空字符串 是获取对开放式数据库的引用的一种方法 不更改窗口名称的窗口 窗口的位置。如果你想 在每次呼叫时打开一个新窗口 window.open(),则应使用 特殊值(为空) strWindowName

我相信根据上述规范,这可能会起作用:


,。

您会发现在大多数浏览器中颠覆“阻止弹出窗口”是很棘手的。但是,如果它被禁用,以下操作将起作用

主窗口:

var status = false;

function winOpen(){
    window.open("child.html");
}

function winStatus(){
    alert(status);
}
弹出窗口:

window.opener.status = true;

window.onblur = window.focus;

window.onunload = function(){
    window.opener.status = false;
};

是一个非标准属性,可能适用于所有浏览器,也可能不适用于所有浏览器。看起来符合逻辑。。这将如何适应我现有的框架。。?由于我的javascript知识有点不稳定,我添加了一个演示。看看你是否能按照你的需要去工作。”阿维拉尔:对不起,伙计,我在编辑我的帖子的时候被吓坏了。我已经再次将url添加到window.open文档中。这个方法经过一点实验后就成功了。我必须把主脚本放在父窗口中,以确保它正常工作。。。非常感谢你的帮助。。给你一个!
window.opener.status = true;

window.onblur = window.focus;

window.onunload = function(){
    window.opener.status = false;
};