2011-10-26 25 views
4

開いているブラウザウィンドウがリストを取得しようとしているウィンドウと同じドメインにある場合は、そのリストを表示する方法はありますか?Javascript:同じドメインで開いているブラウザウィンドウを見つける

+0

非常に、非常に疑わしい。 JavaScriptは、現在のタブ/ウィンドウにサンドボックス化されています(ほとんどのブラウザでは?)。 – meagar

答えて

8

一般的に、

セキュリティの理由により、ウィンドウ間に「接続」(例えば、1つのウィンドウがwindow.openを使用して他のウィンドウがすべて開かれていない場合)を行うことはできません。

編集:

あなたのウィンドウに名前を割り当てる場合は、親ページを更新した後、その上にコントロールを取り戻すことができます。

  1. windowVar = window.open('somePage.html', 'windowName');名前windowNameと子ウィンドウが開きます。

  2. windowVar = window.open('', 'windowName');は、変数windowVarを名前windowNameのウィンドウに再関連付けします。

  3. 今や、windowVar.location.href= 'logout.html';はあなたのユーザーをログアウトさせます。

編集:

セッションIDがまだ有効であるかどうかを確認する機能logged_inlogged.phpを作成します。

は、あなたがこのような何かを行うことができ、あなたが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

1つのウィンドウが実際に別のウィンドウを開きますが、親ページをリロードすると、その子ページは親に接続されなくなりました。 – AndroidDev

+1

@AndroidDevページをリロードすると、呼び出し側ウィンドウのJSウィンドウオブジェクトが新しいものになっているので、正しいようです。 – HerrSerker

+0

親ページにサインアウトボタンがあると、親ページがリロードされると、子ページはまだサインインされているように見えます。親は子とやりとりすることができないため、子供が自分自身をリロードするようにするには?私はあなたがGmailでこれを行うと、2人は同期していることに気付きます。多分、Googleはこれを達成するために両方のウィンドウをポーリングしていますか? – AndroidDev

関連する問題