javascript - 获得新权限后 Chrome 对象不更新
问题描述
我有一段代码请求我的 chrome 扩展的新权限。我尝试获得的新权限是nativeMessaging
. 我得到了 chrome 要求授予新权限的弹出窗口,现在这就是麻烦开始的地方。
根据chrome.permissions.getAll
并且chrome.permissions.contains
我有我要求的许可。但是当我检查时chrome.runtime
,例如connectNative
没有出现。
此外,当我尝试在扩展背景页面上手动获取权限时,我得到了弹出窗口,根据getAll
并且contains
我有权限但我仍然得到错误,这connectNative
是不可用的。
作为现在的解决方法,我只需重新加载扩展名,chrome.runtime.reload()
它就可以工作了。但我想在没有发布的情况下拥有它。
是否存在在您获得新权限后未更新 chrome 对象的情况?
解决方案
发现发生了什么。在您访问 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);
});
});
清单.json
{
"name": "Native Messaging Example",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["bg.js"]
},
"browser_action": {},
"optional_permissions": [
"nativeMessaging"
]
}
评论“chrome.runtime;”行 它再次起作用。
推荐阅读
- r - which.min 返回双精度向量的多个索引
- r - R - 基于日期列使用 group_by 的平均计算?
- c# - WPF 在 BingMaps 控件中绑定 ZoomLevel 和 Center
- c# - 在 C# 6 索引初始值设定项中使用 C# 8 容错运算符
- mysql - 获取与“ON DUPLICATE KEY UPDATE”匹配的主键行的值?
- python - How do I create an array of 3D coordinates in Python?
- java - 我应该为 API 包中的数据类使用接口吗?
- vba - 如何在 VBA 中获取本地驱动器的 ShareName?
- python - Why doesn't the function change it's argument?
- scala - How to pass set of input files(not directory) to spark job and create dataframe on top of those files