Chrome扩展程序-找出扩展程序选项卡是否打开

雪崩1

我已经设置好了,当我单击extn图标时-我的extnindex.html打开。
如果我再次单击该图标-我不希望它打开第二个选项卡。我希望它聚焦已打开的选项卡(如果已打开)。

问题出在if it's open一部分。理想情况下,我不想请求tabs许可,因为它很麻烦。由于此限制,我无法遍历所有打开的选项卡并检查其URL。
我尝试存储extn选项卡IDchrome.local.storage并单击extn按钮时对其进行检查-但事实证明,始终保持最新的选项卡号非常困难。最终的障碍是,当Chrome关闭时-它不会触发任何类型的onClose事件;因此,我无法清除现在过时的extn标签ID的本地存储。
因此,当我重新打开Chrome时,请点击extn按钮-它不会打开新标签页,因为它可以看到存储中的旧标签页ID,并认为该标签页已打开。

没有tabs许可,有什么方法可以实现结果

wOxxOm

对于chrome://extensionsUI中显示的嵌入式选项,您可以简单地使用chrome.runtime.openOptionsPage(),它将负责重新调整现有选项卡的焦点

要查找您自己的扩展程序的独立标签,请使用在另一个标签的JS上调用的chrome.extension.getViews()chrome.tabs.getCurrent()window来获取自己的“当前”标签:

function getOwnTabs() {
  return Promise.all(
    chrome.extension.getViews({type: 'tab'})
      .map(view =>
        new Promise(resolve =>
          view.chrome.tabs.getCurrent(tab =>
            resolve(Object.assign(tab, {url: view.location.href}))))));
}

async function openOptions(url) {
  const ownTabs = await getOwnTabs();
  const tab = ownTabs.find(tab => tab.url.includes(url));
  if (tab) {
    chrome.tabs.update(tab.id, {active: true});
  } else {
    chrome.tabs.create({url});
  }
}

用法:

openOptions('index.html')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Chrome扩展程序中的所有选项卡中设置切换开关状态

如何使用JavaScript在Chrome扩展程序中获取当前选项卡的URL

关闭Chrome扩展程序选项

Chrome扩展程序CaptureStream

仅在Firefox / Chrome扩展程序的一个选项卡中禁用/启用javascript(使用Web扩展程序)

Chrome扩展程序:获取活动选项卡的源代码

单击扩展程序图标时,在新选项卡中打开扩展程序的options.html页面

检查是否安装了扩展程序,如果用户删除了扩展程序,则关闭选项卡

我已经打开的Chrome扩展程序选项卡在扩展程序更新时已关闭

Chrome扩展程序中的“更新”选项卡,然后等待直到它打开以打开另一个下载链接。如何等待直到在选项卡中打开url?

Chrome扩展程序仅在当前选项卡中更改用户代理

Chrome扩展程序:在当前选项卡上进行事件监听

Chrome扩展程序-executeScript不在活动选项卡中

chrome扩展程序中的选项卡更改时的页面内容

Chrome扩展程序-在选项卡上定义的调用功能(参考错误)

Google Chrome扩展程序在弹出窗口和选项卡之间进行对话

Chrome扩展程序:Javascript注入到活动选项卡

Chrome扩展程序的指标

Chrome扩展程序:webRequest重定向到现有选项卡,而无需打开新选项卡

Chrome扩展程序-通知

Chrome扩展程序选项

Chrome扩展程序:是否可以找出“ debugger”语句是否存在?

Chrome 扩展程序:如何通过单击 html 弹出窗口中的按钮在新选项卡中打开指定链接?

如何在开发(解包)时在所有选项卡上提供 Chrome 扩展程序?

Chrome 扩展程序 - 在当前选项卡的 popup.html 中激活脚本

仅在 Chrome 扩展程序的特定选项卡上注入 JS

Chrome 扩展程序化 CSS 注入到活动选项卡中的错误

如何将 JavaScript 发送到 Chrome 扩展程序中的特定选项卡?

无法从我的 chrome 扩展程序的选项卡中获取选定的文本/突出显示的文本