我正在处理一个名为Chrome Snippets的Chrome扩展程序,它允许您从文件中注入JavaScript代码段,但我无法访问用户计算机上的本地目录。任何人都知道如何做到这一点?
的manifest.json:
{
"name": "Chrome Snippets",
"description": "Run JavaScript on the DOM of any web page from a library of recipes stored on your computer.",
"author": "Adam Fisher",
"version": "1.0",
"manifest_version": 2,
"default_locale": "en",
"permissions": [ "tabs", "webNavigation", "*://*/*", {"fileSystem": ["write", "retainEntries", "directory"]} ],
"app": {
"background": {
"scripts": ["js/background.js"],
"persistent": false
}
},
"icons": {
"16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png"
},
"options_page": "html/options.html",
"homepage_url": "http://adamfisher.me"
}
background.js:
/*
** file: js/background.js
** description: Main functionality of the extension. Checks if a file exists
** for the given host name and loads it.
*/
chrome.webNavigation.onCompleted.addListener(function (details) {
var recipesDirectory = localStorage['Chrome_Snippets_Recipes_Directory'];
var host = "/^(?:ht|f)tps?:\/\/([^/]+)/".exec(details.url); // Get the host part of the URL.
chrome.tabs.executeScript(details.tabId, {
file: ''
});
});
答案 0 :(得分:0)
使用"app"
替换manifest.json文件中的"background"
:
"background": {
"scripts": ["js/background.js"],
"persistent": false
},
参考:https://developer.chrome.com/extensions/event_pages
" app"条目保留给具有不同API和权限集的Chrome Apps。
=============================================== =
修改强>
忘了你真正想要的东西。
Chrome扩展程序无法访问用户的文件系统。此API仅适用于Chrome应用。 因此,如果您需要将其作为扩展名进行操作,则无法将文件保存在本地文件系统中。
答案 1 :(得分:0)
你不能在一个应用程序/扩展程序中制作你想要的东西,这就是Paweł试图告诉你的。
应用无法使用tabs
(并且通常无法与普通浏览器内容进行交互),扩展无法使用fileSystem
(并且通常无法访问系统资源)。< / p>
您需要重新考虑您的策略,或同时使用扩展程序和相互通信的应用程序。