Browser tab knows when it has been duplicated

1.6k Views Asked by At

I want my browser tab to know when it has been duplicated.

The only similar solutions I've seen focus on just the duplicated tab knowing it's been duplicated or the original tab knowing it's been duplicated but this only works on Chrome.

Requirements:

  • Solution works on all modern browsers

Bonus if the solution:

  • Works on a version of Internet Explorer
  • Uses some native Angular functionality
1

There are 1 best solutions below

1
Ranjith Jayaram On BEST ANSWER

You can make use of Broadcast Channel API .

  1. Create a channel on load and broadcast the message
  2. use the onmessage event, capture the message and if it matches the initial one, broadcast another
  3. The duplicate tag will receive the second broadcast , while first tab receives the first broadcast

 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");
      }
    };