当有人请求聊天时,会在数据库中输入一个条目。我的仪表板上有一个隐藏的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 %>
非常感谢您提供的任何帮助..
最诚挚的问候, 保罗
答案 0 :(得分:1)
我不确定,但我相信如果你在调用window.open时命名窗口(例如myWin
),然后再使用相同的名称再次调用window.open,它将返回现有窗口if它已经打开或打开/重新打开窗口并返回一个句柄。
啊,你去了 - 来自window.open:
如果是带有名称的窗口 strWindowName已经存在,那么, 而不是打开一个新窗口, strUrl被加载到现有的 窗口。在这种情况下返回值 该方法是现有的窗口 和strWindowFeatures被忽略。 为strUrl提供一个空字符串 是一种获得对开放的引用的方法 窗口的名称没有改变 窗口的位置。如果你想 打开每个电话的新窗口 window.open(),你应该使用 特殊值_blank for strWindowName。
我相信根据上面提到的规范,这个可能工作:
var hChatWindow = window.open("", "ChatWindow", "whatever features"); // url intentionally left blank
// hChatWindow now contains a reference to new, existing or re-opened window
hChatWindow.focus();
if (hChatWindow.location=="about:blank") { // not sure; you need to experiment here
hChatWindow.location = "/chat/chat_window.asp?whatever";
}
答案 1 :(得分:0)
在gmyWin.onunload
上注册回调。
答案 2 :(得分:0)
你会发现在大多数浏览器中颠覆“阻止弹出窗口”很棘手。但是,如果禁用它,则以下操作将起作用。
主窗口:
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;
};