是否可以将filesystem
作为chrome.permissions.request
API(针对Chrome应用)请求的可选权限提及?
我的JS代码包括:
document.getElementById('savebtn').addEventListener('click',
function () {
chrome.permissions.request({ permissions: ["fileSystem"] },
function (granted) {
if (granted) {
chrome.fileSystem.chooseEntry({ type: 'openDirectory' },
function (entry) {
...
});
}
});
});
但我在上面的代码中遇到chrome.fileSystem
时出现错误:
... extensions::fileSystem:11: Uncaught TypeError: Cannot read property 'getFileBindingsForApi' of undefined{TypeError: Cannot read property 'getFileBindingsForApi' of undefined
我的manifest.json
文件包含:
"optional_permissions": [
{"fileSystem": ["write", "retainEntries", "directory"]}
],
答案 0 :(得分:3)
如果您要使用fileSystem.directory
类型chooseEntry
,也应该请求openDirectory
权限。这可以按如下方式完成:
chrome.permissions.request({
permissions: [
'fileSystem',
'fileSystem.write',
'fileSystem.retainEntries',
'fileSystem.directory'
]
}, function(granted) {
if (granted) { /* use chrome.fileSystem API */ }
});
在Chrome 45之前,当您第一次获得chrome.fileSystem
权限后访问fileSystem
API时,会出现一个错误,导致您的问题出错。在Chrome 44中,控制台上输出了一条错误消息,而早期版本导致扩展程序崩溃(https://crbug.com/489723)。
要解决此错误,请将fileSystem
权限放入所需的权限集中,即在manifest.json中包含以下内容:
"optional_permissions": [
{"fileSystem": ["write", "retainEntries", "directory"]}
],
"permissions": [
"fileSystem"
],
fileSystem权限不会添加任何安装警告,因此根据需要标记此权限并不是什么大问题。