2011-10-26 32 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

相關問題