Búsqueda de sitios web

javascript - La pestaña del navegador sabe cuando ha sido duplicada


Quiero que mi pestaña del navegador sepa cuándo ha sido duplicada.

Las únicas soluciones similares que he visto se centran solo en la pestaña duplicada sabiendo que ha sido duplicada o en la pestaña original sabiendo que ha sido duplicada, pero esto solo funciona en Chrome.

Requisitos :

  • La solución funciona en todos los navegadores modernos

Bono si la solución:

  • Funciona en una versión de Internet Explorer
  • Utiliza algunas funcionalidades nativas de Angular

Respuesta #1

Puedes hacer uso de la API de Broadcast Channel.

  1. Crear un canal al cargar y transmitir el mensaje
  2. usa el evento onmessage, captura el mensaje y si coincide con el inicial, transmite otro
  3. La etiqueta duplicada recibirá la segunda transmisión, mientras que la primera pestaña recibe la primera transmisión

 const broadcast = new BroadcastChannel('test')
    broadcast.postMessage('I am First');
    broadcast.onmessage = (event) => {
      if (event.data === "I am First") {
        broadcast.postMessage(`Sorry! Already open`);
        alert("First Tab");
      }
      if (event.data === `Sorry! Already open`) {
        alert("Duplicate Tab");
      }
    };