获得新权限后,Chrome对象不会更新

时间:2019-02-26 16:14:06

标签: javascript google-chrome-extension

我有一段代码,请求我的chrome扩展程序具有新的权限。我尝试获得的新权限为nativeMessaging。我在chrome要求授予新权限的地方看到弹出窗口,现在麻烦就从这里开始。

根据chrome.permissions.getAllchrome.permissions.contains,我拥有我所请求的许可。但是当我检查chrome.runtime时,例如connectNative没有出现。

此外,当我尝试在扩展程序后台页面上手动获取权限时,根据getAllcontains的提示,我弹出了窗口,但仍然出现错误,{{ 1}}不可用。

作为一种变通办法,我现在用connectNative重新加载扩展名,它可以工作。但是我想不发布就拥有它。

是否存在获取新权限后未更新chrome对象的情况?

1 个答案:

答案 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;'行然后它再次起作用。