2011-10-26 33 views

回答

8

一般来说,没有。

除非窗口之间存在“连接”(例如,一个窗口使用window.open打开所有其他窗口),否则由于安全原因,浏览器窗口无法进行交互。

编辑:

如果您分配一个名称,你的窗口,你可以刷新父页面后重新获得控制权。

  1. windowVar = window.open('somePage.html', 'windowName');打开与名windowName一个子窗口。

  2. 刷新父页面后,windowVar = window.open('', 'windowName');将变量windowVar与名称windowName的窗口重新关联。

  3. 现在,windowVar.location.href= 'logout.html';可让您注销您的用户。

编辑:

假设你使用PHP,你可以做这样的事情:

与函数logged_in指验证会话ID仍然有效创建logged.php

<?php 
    if (isset($_GET['sid'])) 
      if (logged_in($_GET['sid'])) 
      echo "in"; 
    else 
      echo "out"; 
?> 

包括在你的网页check()功能。

function check() 
{ 
    var url = "http://redtwitz.com/test/logged.php?sid=" + sessionId; 
    var request; 
    try 
    { 
     request = new XMLHttpRequest(); 
    } 
    catch(error1) 
    { 
     try 
     { 
      request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch(error2) 
     { 
      request = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 
    request.open("GET", url, false); 
    request.setRequestHeader("User-Agent",navigator.userAgent); 
    request.send(null); 
    if(request.status==200) 
     if(request.responseText == "out") 
      window.location.href = "logout.html"; 
} 

每5秒呼叫检查一次。

<body onload="setInterval(check, 5000);"> 
+0

一个窗口实际上打开另一个窗口,但我注意到如果我重新加载父页面,子页面不再连接到父窗口。 – AndroidDev

+1

@AndroidDev这似乎是正确的,因为调用者窗口的JS窗口对象是一个新的,如果你重新加载页面。 – HerrSerker

+0

因此,如果我的父页面有一个退出按钮,当按下时会导致父页面重新加载,但子页面仍然看起来像已经登录。由于家长无法与孩子进行通信,因此可能有何可能让孩子重新加载自己?我注意到,如果您在Gmail中执行此操作,则两者保持同步。也许谷歌正在轮询两个窗口来完成这个? – AndroidDev

相关问题