Saltar al contenido

¿Cómo saber si la pestaña del navegador ya está abierta usando Javascript?

Este grupo de trabajo ha estado mucho tiempo investigando la respuesta a tu búsqueda, te brindamos la respuesta y nuestro deseo es servirte de mucha apoyo.

Solución:

Puede usar algo como lo siguiente


Open window

// JavaScript
var a = document.getElementById('opener'), w;        
a.onclick = function()  w.closed) 
    w = window.open("https://www.google.com","_blank","menubar = 0, scrollbars = 0");
   else 
    console.log('window is already opened');
  
  w.focus();
;

Trabajando jsBin | Más sobre el método window.open

Si desea controlar más de una ventana, use el fragmento a continuación


Open google.com | 
Open yahoo.com 

//JavaScript
window.onload = function()
  var a = document.querySelectorAll('.opener'), w = [], url, random, i;
  for(i = 0; i < a.length; i++)
    (function(i)
      a[i].onclick = function(e)  w[i].closed) 
          url = this.href;
          random = Math.floor((Math.random() * 100) + 1); 
          w[i] = window.open(url, "_blank", random, "menubar = 0, scrollbars = 0");
         else 
          console.log('window ' + url + ' is already opened');
        
        e.preventDefault();
        w[i].focus();
      ;
    )(i);
  
;

Trabajo jsBin

Si no desea que se carguen en una ventana separada, simplemente excluya esta línea

random = Math.floor((Math.random()*100)+1);

y eliminar random referencia de la línea siguiente

w[i] = window.open(url, "_blank", random, "menubar=0,scrollbars=0");

Nota al margen: como puede ver arriba, creamos dos ventanas con contenido de terceros; debe saber que no hay forma de obtener ninguna referencia (a la ventana principal/abridor) de ellos.

Una idea básica es almacenar el recuento de pestañas en una cookie o localStorageincrementándolo en la carga de la página y disminuyéndolo en la descarga de la página:

if (+localStorage.tabCount > 0)
    alert('Already open!');
else
    localStorage.tabCount = 0;

localStorage.tabCount = +localStorage.tabCount + 1;
window.onunload = function () 
    localStorage.tabCount = +localStorage.tabCount - 1;
;

Intente abrir este violín en varias pestañas.

Sin embargo, tenga en cuenta que esta técnica es bastante frágil. Por ejemplo, si por alguna razón el navegador falla, el controlador de descarga no se ejecutará y se desincronizará.

La respuesta de Casey Chu funciona bien hasta que el navegador falla con la página abierta. En cualquier ejecución siguiente, el localStorage el objeto se habrá inicializado tabCount con valor distinto de cero. Por lo tanto, una mejor solución es almacenar el valor en una cookie de sesión. La cookie de sesión se eliminará cuando el navegador se cierre correctamente. Cuando el navegador falla, la cookie de sesión se conservará, pero afortunadamente solo para una próxima ejecución del navegador.

Objeto sessionStorage es distinto para cada pestaña, por lo que no se puede usar para compartir el recuento de pestañas.

Esta es la solución mejorada que usa la biblioteca js-cookie.

if (+Cookies.get('tabs') > 0)
    alert('Already open!');
else
    Cookies.set('tabs', 0);

Cookies.set('tabs', +Cookies.get('tabs') + 1);

window.onunload = function () 
        Cookies.set('tabs', +Cookies.get('tabs') - 1);
;

Si te gusta la invitación, tienes la habilidad dejar un artículo acerca de qué le añadirías a este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *