JavaScript fenêtre.ouvert uniquement si la fenêtre n'existe pas déjà
J'ai une application qui ouvre une nouvelle fenêtre en cliquant sur un lien. Cela engendre une page qui contient une applet Java. Le problème que j'ai c'est que en cliquant sur le même lien recharge la page, ce qui rétablit l'application Java. Est-il possible de ce piège? Deux solutions acceptables sont:
- Permettre de multiples fenêtres à ouvrir à partir du gestionnaire de clic
- Ignorer les demandes ultérieures si la fenêtre est déjà ouverte
Excuses pour le Javascript débutant - ce n'est pas vraiment ma principale chose.
Le code associé à la gestionnaire est
function launchApplication(l_url, l_windowName)
{
var l_width = screen.availWidth;
var l_height = screen.availHeight;
var l_params = 'status=1' +
',resizable=1' +
',scrollbars=1' +
',width=' + l_width +
',height=' + l_height +
',left=0' +
',top=0';
winRef = window.open(l_url, l_windowName, l_params);
winRef.moveTo(0,0);
winRef.resizeTo(l_width, l_height);
}
EDIT:
Merci pour les réponses - j'ai modifié les suggestions légèrement pour que je puisse avoir plus d'une URL ouvertes par le biais de la fonction.
EDIT2:
Il existe une autre version de ce code à Vérifier une URL à ouvrir dans une autre fenêtre
var g_urlarray = [];
Array.prototype.has = function(value) {
var i;
for (var i in this) {
if (i === value) {
return true;
}
}
return false;
};
function launchApplication(l_url, l_windowName)
{
var l_width = screen.availWidth;
var l_height = screen.availHeight;
var winRef;
var l_params = 'status=1' +
',resizable=1' +
',scrollbars=1' +
',width=' + l_width +
',height=' + l_height +
',left=0' +
',top=0';
if (g_urlarray.has(l_url)) {
winRef = g_urlarray[l_url];
}
alert(winRef);
if (winRef == null || winRef.closed) {
winRef = window.open(l_url, l_windowName, l_params);
winRef.moveTo(0,0);
winRef.resizeTo(l_width, l_height);
g_urlarray[l_url] = winRef;
}
}
Vous devez vous connecter pour publier un commentaire.
Je le ferais comme ça - en fait de stocker toutes les référencée fenêtres ouvertes sur la fonction elle-même. Lorsque la fonction de feux, de vérifier si la fenêtre n'existe pas ou a été proche de la sorte, le lancement de la popup. Sinon, se concentrer sur la fenêtre pop-up pour la demande.
winRefs
à l'origine, vérifier, mais alors vous avez mal orthographié plus tard commewinrefs
Vous devez effectuer 2 tests... 1 vérifier si la fenêtre est définie, et 2 pour voir si c'était fermé.
if(winRef.location.href != myNewURL){...}
uniquement à recharger si différents.Vous pouvez utiliser quelque chose comme cela dans la page qui s'ouvre la nouvelle fenêtre:
Code de travail
Vous pouvez cocher la case comme ceci:
!winref
est vrai, alors la deuxième partie de l'IOR --winref.closed
-- ne doit jamais être vérifiée. Est-ce que semblent à droite pour vous? Ou suis-je en tort?Essayez de vérifier:
if (!winref || winref.fermé || !winref.document) {
}