【问题标题】:Browser tab knows when it has been duplicated浏览器选项卡知道它何时被复制
【发布时间】:2022-01-22 17:53:49
【问题描述】:

我希望我的浏览器标签知道它何时被复制。

我见过的唯一类似的解决方案只关注重复的标签,知道它已被复制,或者原始标签知道它已被复制,但这仅适用于 Chrome。

要求:

  • 解决方案适用于所有现代浏览器

如果有解决方案则奖励:

  • 适用于 Internet Explorer 版本
  • 使用一些原生 Angular 功能

【问题讨论】:

    标签: javascript angular typescript duplicates browser-tab


    【解决方案1】:

    您可以使用Broadcast Channel API。

    1. 在加载时创建频道并广播消息
    2. 使用onmessage 事件,捕获消息,如果它与初始消息匹配,则广播另一个
    3. 重复标签将接收第二个广播,而第一个标签接收第一个广播

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

    【讨论】:

    • 这个解决方案是完美的,并且远远优于我见过的所有其他解决方案。以前,我有单独的功能来检查选项卡是否重复或选项卡是否重复,这是按时间间隔设置的。但是,您的功能会同时执行这两种功能,并在复制原始选项卡时自动触发。向你致敬@Ranjith
    猜你喜欢
    • 2014-11-13
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2014-10-28
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多