首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展程序失去activeTab权限

Chrome扩展程序失去activeTab权限
EN

Stack Overflow用户
提问于 2020-03-06 01:47:43
回答 1查看 232关注 0票数 0

我有一个扩展,当单击"browser action“(地址栏旁边的图标)时,在当前选项卡的页面上执行一个脚本:

background.js

代码语言:javascript
复制
chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript({
    file: 'controls.js'
  });
});

controls.js向DOM中注入一些内容,以便用户可以按一个键告诉background.js设置WebRTC连接并执行其他业务逻辑操作。

通常情况下这很好。但有时,如果某个选项卡已经打开,但已经有一段时间没有使用,扩展程序就会停止工作,我认为通常是在计算机进入睡眠状态并再次醒来之后。当发生这种情况时,在background.js的控制台中,我会得到错误“未检查的runtime.lastError:无法访问页面的内容。扩展清单必须请求访问相应主机的权限”。

知道为什么会发生这种情况吗?或者我能做些什么来捕捉这个错误并处理它以获得权限呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 00:08:24

我花了很多功夫才弄清楚这件事。

如果用户已经空闲了一段时间,在刷新页面时,我要注入JS的网站将重定向到另一个域上的身份验证站点,然后再将用户重定向回来。这种情况发生得足够快,以至于通常不会注意到,但Chrome在域更改时会删除activeTab权限。

我是通过通过徽章文本通知用户来处理权限丢失的,大致如下:

代码语言:javascript
复制
chrome.tabs.executeScript(tab.id, {
  code: 'alert("hello activeTab")'
}, (result) => {
  if (result === undefined) { // this means that activeTab permission is lost
    console.log('lost activeTab permission :(');
    chrome.browserAction.setBadgeText({
      text: 'off',
      tabId: tab.id
    });
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60556466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档