2011-01-09 3 views
1

Est-il possible de vérifier si la même fenêtre est déjà ouverte?Javascript: Recherche de la fenêtre ouverte en double

Par exemple, j'ai ouvert une fenêtre via javascript. Puis-je vérifier si cette page est ouverte sur une autre page via javascript?

Je veux juste me concentrer sur la page si elle a déjà été ouverte pour éviter les fenêtres en double.

Merci;)

Répondre

2

Regardez méthode window.open(). Vous devez spécifier le nom de la fenêtre en tant que deuxième paramètre. S'il y a déjà une fenêtre avec ce nom, alors la nouvelle URL sera ouverte dans la fenêtre déjà existante, voir http://www.w3schools.com/jsref/met_win_open.asp

Si vous voulez vraiment vérifier, si la fenêtre est ouverte par vos propres scripts, alors vous devez conserver une référence à la fenêtre ouverte dans une variable globale ou les goûts et créer avec

var myOpenedWindow = myOpenedWindow || window.open(URL, "MyNewWindow"); 

Vous pouvez également résumer ce comportement dans une méthode:

var myOpenWindow = function(URL) { 
    var myOpenedWindow = myOpenedWindow || window.open(URL, "MyNewWindow"); 
    myOpenedWindow.location.href= URL; 
    myOpenedWindow.focus(); 
} 

et appeler cette fonction avec myOpenWindow('http://www.example.com/');

+0

Merci pour cette solution accouplent;) – Somebody

+0

ne fonctionnera pas dans IE8 et IE9 – ranjenanil

1

Si vous avez une fenêtre parent-enfant, voici une solution qui vous permettra de vérifier si une fenêtre enfant est ouverte du parent qui l'a lancée. Cela apportera une attention à la fenêtre enfant sans recharger ses données:

<script type="text/javascript"> 
    var popWin; 
    function popPage(url) 
    { 
     if (popWin &! popWin.closed && popWin.focus){ 
      popWin.focus(); 
     } else { 
      popWin = window.open(url,'','width=800,height=600'); 
     } 
    } 
</script> 

    <a href="http://www.xzy.com" 
onclick="popPage(this.href);return false;">link</a> 

une chose :: --- Si l'utilisateur actualise la fenêtre parent, il peut perd toutes ses références à toutes les fenêtres de l'enfant, il peut avoir eu ouvert.

Espérons que cela aide et faites-moi savoir la sortie.

0

Cela vous aidera si vous voulez ouvrir une URL à partir d'un lien

var Win=null; 
function newTab(url){ 
//var Win; // this will hold our opened window 

// first check to see if the window already exists 
if (Win != null) { 
// the window has already been created, but did the user close it? 
// if so, then reopen it. Otherwise make it the active window. 
if (!Win.closed) { 
    Win.close(); 
// return winObj; 
} 

// otherwise fall through to the code below to re-open the window 
} 

// if we get here, then the window hasn't been created yet, or it 
// was closed by the user. 
Win = window.open(url); 

return Win; 

} 
newTab('index.html'); 
Questions connexes