Comment savoir si une fenêtre existe en Javascript?
J'ai vu des manières de voir si une fenêtre de script d'ouverture est encore ouvert, mais que faire si il n'a pas?
J'ai une petite fenêtre qui a un bouton à cliquer pour charger la grande fenêtre. Quand j'ai fermer la grand, je veux un particulier onUnload
ou onBeforeUnload
d'incendie ssi le petit est fermé; si elle est encore ouverte, ces procédures ne se déclenchera pas. J'ai peut-être tout simplement une fuite massive des cerveaux péter, mais je ne peux pas comprendre comment faire pour vérifier si l'autre fenêtre est ouverte. Le big one n'est pas de l'ouvrir, donc je ne peux pas simplement d'enregistrer la poignée d'ouverture.
En termes plus courts: Si la fenêtre d'Une fenêtre ouverte, B, comment puis-je vérifier dans la fenêtre B si la fenêtre A existe encore?
OriginalL'auteur Andrew | 2011-01-24
Vous devez vous connecter pour publier un commentaire.
de la fenêtre.parent? C'est pour les images, pas pour les popups
Oh, mon dieu. Merci, Juan. Ouais, je voulais dire
opener
, pasparent
. Andrew: à la clé serait la nomfenêtre argumentwindow.open
, mais je ne suis pas au courant de toute façon de l'utiliser autrement que par un autre appel àwindow.open
, ce qui est assez destructeur.Juste de fenêtre de contrôle.ouvreur de ne pas vous dire que c'est toujours ouverte, vous recevrez un message d'erreur si vous avez réellement accéder à une propriété
window.opener.name
et la fenêtre est fermée. La seule propriété, vous pouvez accéder à partir d'une poignée de la fermeture d'une fenêtre est "fermée" de la propriétéJuan, vous avez honte de moi. Homme de bien. Répondre à d'autres modifiés pour intégrer les corrections. Si je pouvais upvote votre réponse, plus d'une fois, je le ferais.
OriginalL'auteur chaos
window.closed
sera définie sur true si vous avez sauté d'une fenêtre et il a été fermé (par script ou de l'utilisateur).Votre cas semble être la suivante:
À partir d'une fenêtre pop-up, vous pouvez vérifier si la fenêtre qui s'affiche, il est toujours ouvert à l'aide de
window.opener.closed
Obtenir le handle d'une fenêtre par nom
Je l'ai mentionné il n'y a pas moyen de simplement obtenir le handle de fenêtre de nom dans les commentaires. Cependant, j'ai fait quelques recherches et trouvé que les ouvrages suivants, en FF/IE/Chrome; c'est un hack, je ne l'ai pas vu mentionné nulle part que le comportement attendu, je ne voudrais pas compter sur elle trop, mais c'était amusant de trouver ça marche!!! Dans mon code, je voudrais encore assurez-vous juste de passer autour de la nécessaire poignées.
Non, vous ne pouvez pas "divin" de la poignée d'une fenêtre. Il n'existe aucun registre de windows par nom. Dans votre exemple, saviez-C créer Un? si c'était le cas, vous devez stocker ce handle
A = window.open(); B = window.open(); B.A = A'
. Alors B peut vérifierif (!A.closed)
;Merci pour le hack. Je pourrais envisager de les utiliser, en fait, mais pour l'instant je suis en train de le rendre plus propre et de formuler un nouveau complètement la fin de la solution.
OriginalL'auteur Juan Mendes
Utiliser try{} catch(err){}.
cette réponse ne me satisfont pas. Je voulais juste ajouter une alternative et peut-être une meilleure solution si quelqu'un comme moi de venir ici. Et il n'y a rien de drôle à propos de "probablement". Parce que les captures peuvent être déclenchées non seulement si la fenêtre.ouvreur n'existe pas, mais lorsque votre code traitant de la fenêtre.ouvreur n'est pas valide.
Ok, merci pour la clarification. À l'aide d'un try-catch n'est pas une pratique recommandée, cependant, des exceptions doivent être utilisés pour l'exceptionnelle qualité de membres, pas de flux d'exécution normale. Test si
window.opener
est une meilleure solution.OriginalL'auteur Audrius