我有一段代码,请求我的chrome扩展程序具有新的权限。我尝试获得的新权限为nativeMessaging
。我在chrome要求授予新权限的地方看到弹出窗口,现在麻烦就从这里开始。
根据chrome.permissions.getAll
和chrome.permissions.contains
,我拥有我所请求的许可。但是当我检查chrome.runtime
时,例如connectNative
没有出现。
此外,当我尝试在扩展程序后台页面上手动获取权限时,根据getAll
和contains
的提示,我弹出了窗口,但仍然出现错误,{{ 1}}不可用。
作为一种变通办法,我现在用connectNative
重新加载扩展名,它可以工作。但是我想不发布就拥有它。
是否存在获取新权限后未更新chrome对象的情况?
答案 0 :(得分:0)
了解发生了什么。一次访问chrome.runtime后,将无法再对其进行更新。
下面是触发问题的示例:
bg.js:
chrome.runtime;
chrome.browserAction.onClicked.addListener(() => {
chrome.permissions.request({
permissions: ['nativeMessaging'],
}, granted => {
console.log(chrome);
const type = typeof chrome.runtime.connectNative;
alert((type === 'function' ? 'GOOD' : 'BAD') + ': ' + type);
});
});
manifest.json
{
"name": "Native Messaging Example",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["bg.js"]
},
"browser_action": {},
"optional_permissions": [
"nativeMessaging"
]
}
注释'chrome.runtime;'行然后它再次起作用。