Comment savoir si un onglet du navigateur est déjà ouvert à l'aide de Javascript?
Comment savoir ou vérifier si les deux onglets du navigateur est déjà ouvert et ceux de l'onglet est ouvert, l'utilisateur recevra un message d'alerte ou message d'erreur indiquant que "l'url est déjà ouvert", ou quelque chose comme ça, dans la pure/JavaScript natif? Cet onglet de navigateur est de contenir un site externe qui est je n'ai pas de privilèges pour les manipuler ou de les modifier. Grâce
Un Exemple D'Url
yahoo.com and google.com
Je tiens à alerter l'utilisateur si il y a déjà onglet ouvert pour yahoo.com et google.com
Et je veux utiliser tabCreate pour ouvrir l'url comme ceci:
tabCreate("http://maps.google.com/", "tabMapsPermanentAddress");
mean to open a new tab, it is use in creating chrome extension
window.open()
retourref
vous pouvez vérifier avant d'ouvrir la fenêtrevar windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]);
- comme ceci jsfiddle.net/vyhy9wbu ? il informera l'utilisateur que l'url est déjà ouvert?
- je pense que vous voulez voir quelque chose comme ceci jsfiddle.net/vyhy9wbu/1
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser quelque chose comme suit
Travail jsBin | Plus sur la fenêtre.méthode ouverte
Si vous souhaitez contrôler plus d'une fenêtre, utilisez l'extrait de code ci-dessous
Travail jsBin
Si vous n'en voulez pas à charger dans la fenêtre indépendante, juste exclure cette ligne
et supprimer
random
de référence de la ligne suivanteCôté remarque: Comme vous pouvez le voir ci-dessus, nous avons créé deux fenêtres avec certains contenus de tiers; vous devriez savoir qu'il n'y a aucun moyen d'obtenir toute référence (pour le parent/ouvreur de fenêtre) d'eux.
w
variable n'est pas déclarée dans jsBin; maintenant, il fonctionne. En outre, j'ai ajouté une autre solution qui permet de contrôler plus d'une fenêtre - vous pouvez avoir autant que vous le souhaitez. Laissez-moi savoir si cela a aidé.tabCreate()
fonction de votre question, parce que je n'ai aucune idée de ce qu'il fait à l'intérieur 😉 par Ailleurs, non, il n'y a aucun moyen d'être averti si l'utilisateur ouvre une fenêtre/lien à l'extérieur de votre application. Cette chose est contrôlé par le navigateur lui-même; il n'y a aucun moyen de demander navigateur comme "hey navigateur, permettez-moi de savoir si l'utilisateur ouvre une nouvelle fenêtre/onglet/lien de la barre d'adresse" - en d'autres termes, vous pouvez avoir un contrôle limité seulement si les choses happed à l'intérieur de votre application...window.open
méthode que vous êtes en mesure de contrôler le moment où une fenêtre s'ouvre ou si elle a été fermée; à l'aide de la plaine d'ancrage comme<a href="url">go to this link</a>
vous serez en mesure de contrôler le moment où la fenêtre s'ouvre mais vous n'aurez pas de savoir si elle a été fermée par l'utilisateur - vous pouvez utiliser des cookies ou des paramètres régionaux de stockage à (éventuellement) d'obtenir plus de contrôle, mais il n'a de sens que si la fenêtre n'a pas de contenu de tiers (comme google.com, yahoo.com etc.)Une idée de base est de stocker de l'onglet compter dans un cookie ou
localStorage
, en augmentant au chargement de la page et de décrémentation sur la page de décharger:Essayer l'ouverture de ce violon dans plusieurs onglets.
Noter que cette technique est assez fragile, si. Par exemple, si pour une raison quelconque, le navigateur se bloque, l'décharger gestionnaire ne fonctionnera pas, et il va s'en aller de la synchronisation.
localStorege
sont conservés. LetabCount
valeur ne sera jamais atteindre 0 encore.La réponse par Casey Chu fonctionne très bien jusqu'à ce que le navigateur se bloque avec la page ouverte. Sur toute la prochaine exécution, le
localStorage
objet initialisétabCount
non la valeur zéro. Par conséquent, une meilleure solution est de stocker la valeur dans un cookie de session. Le cookie de session sera supprimé lorsque le navigateur sorties avec succès. Lorsque le navigateur se bloque, le cookie de session sera effectivement préservé, mais heureusement que pour une prochaine exécution du navigateur.Objet
sessionStorage
est distincte pour chaque onglet de sorte qu'il ne peut pas être utilisé pour le partage de l'onglet comte.C'est l'amélioration de la solution à l'aide de js-cookie bibliothèque.
Cette réponse: https://stackoverflow.com/a/28230846 est une alternative qui ne nécessite pas de Cookies/js-témoin de la bibliothèque. - Il mieux adapté à mes besoins. En un mot (voir réponse pour une description complète):
...