Javascript Chrome扩展:并非所有API';s在chrome.runtime.reload()之后出现
我的Chrome扩展有一个问题,这取决于Javascript Chrome扩展:并非所有API';s在chrome.runtime.reload()之后出现,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我的Chrome扩展有一个问题,这取决于 chrome.tabsAPI 我的分机大部分运行正常。有时我会做一件事 chrome.runtime.reload()这几乎没有问题,但是 有时(我既不能预测何时也不能可靠地预测 在重新启动后后台脚本返回时复制它) chrome.tabs引用是未定义的。因为我依赖于那个API 分机无法启动。这种情况是可以检测到的,但当我 尝试执行chrome.runtime.reload(),chrome.runtime.reload 未定义。所以我没有办法重新启动 我
chrome.tabs
API
我的分机大部分运行正常。有时我会做一件事
chrome.runtime.reload()
这几乎没有问题,但是
有时(我既不能预测何时也不能可靠地预测
在重新启动后后台脚本返回时复制它)
chrome.tabs
引用是未定义的
。因为我依赖于那个API
分机无法启动。这种情况是可以检测到的,但当我
尝试执行chrome.runtime.reload()
,chrome.runtime.reload
未定义
。所以我没有办法重新启动
我意识到我可能应该开发软重启功能
让我的扩展返回空白状态,但这是非常有用的
密集型,所以我想问问社区是否还有其他人有
在这种情况下,你是如何解决这个问题的
是吗
以下是我在manifest.json
文件中的权限:
"permissions": [
"tabs",
"contextMenus",
"webNavigation",
"webRequest",
"webRequestBlocking",
/* some whitelisted web URLs... */
非常感谢你的邀请
指给我看
这个问题似乎涵盖了完全相同的现象
我已经决定有足够的迹象表明这是一个bug
在chrome对背景页面的处理中
我还有一些补充意见:
- @Xan指出的问题提到了 Chrome的背景页面
- 当我在我的应用程序中调用
复制错误时 后台页面的开发者工具控制台我发现chrome.runtime.reload()
像往常一样可供我的扩展插件使用 弹出式用户界面chrome.runtime.reload()
- 背景页(尚未)弃用,但在
建议改为迁移到事件页,它们不可能
在Chromium团队的优先列表中排名靠前。换句话说,我认为
这个bug的风险——如果它是一个bug的话——会有很高的被发现的风险
分类为
,因此,尝试似乎没有效果 等待解决问题'wontfix'
- 我的大多数扩展功能都是通过Chrome触发的
。在浏览器操作开始渲染之前,我可以 在后台页面上发布一条消息,我知道它会回电话 马上浏览操作
- 当扩展正常启动时,修复将只是一个简单的过程 没有对最终用户不可见的op
- 由于修复的正常操作是不可操作的,因此修复不会损害 如果Chromium团队在将来的版本中修复了该缺陷,则扩展
- “死亡”背景页将无法注册任何消息 听众。如果背景页面没有响应安全检查 消息,弹出窗口可以通过重新启动 分机
如果您有进一步的想法,请发表评论 我记得前面提到过这一点,知道这一点特别好,但有点坏,因为它指向了Chromium中一个公开的、显然很难解决的bug。我的理论是避免chrome.runtime.reload(),并在扩展本身中重新启动开发软件;只是事件页面更高效。您能否尝试创建一个最小的扩展,在新的配置文件中触发您的bug,并将其发布在?有了一个可复制的测试用例,调试问题并在Chrome端修复问题就更容易了。不,它没有被弃用,但在顶部有一个红色的“警告”。根据我的经验,软件项目往往避免在他们不推荐的子系统上提供支持。另外,原则上这是个好主意,但我的扩展太大了,时间紧迫。有了针对最坏症状的权宜之计,我以后可能能够更正确地看待这个问题。您的问题显示了webRequest API的使用,它还不能用于事件页面:。另外,我对Chrome做出了贡献,这看起来不像WontFix bug,所以如果你提供了一个可靠的测试用例,这个bug实际上可能会被修复。好吧,那么如果我尝试创建一个可复制的测试用例与否,这看起来将是一个发展经济学的问题。将来我也会密切关注webRequest用户的替代方案。