从 Chrome 应用程序访问本地目录
Accessing a local directory from a Chrome App
我正在开发一个名为 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: ''
});
});
将manifest.json文件中的"app"
替换为"background"
:
"background": {
"scripts": ["js/background.js"],
"persistent": false
},
参考:https://developer.chrome.com/extensions/event_pages
"app" 条目是为 Chrome Apps 保留的,它们具有不同的 API 集和权限。
============================================= ===
编辑
忘了你真正想要的是什么。
Chrome 扩展无法访问用户的文件系统。此 API 仅适用于 Chrome 个应用程序。
所以如果你需要把它作为一个扩展来做,你不能在本地文件系统上保存文件。
你无法一次完成你想要的东西 app/extension,这就是 Paweł 试图告诉你的。
比较Apps APIs and Extensions APIs
应用程序不能使用 tabs
(通常不能与普通浏览器内容交互),扩展程序不能使用 fileSystem
(通常不能访问系统资源) .
您需要重新考虑您的策略,或者同时使用相互通信的扩展程序和应用程序。
我正在开发一个名为 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: ''
});
});
将manifest.json文件中的"app"
替换为"background"
:
"background": {
"scripts": ["js/background.js"],
"persistent": false
},
参考:https://developer.chrome.com/extensions/event_pages
"app" 条目是为 Chrome Apps 保留的,它们具有不同的 API 集和权限。
============================================= ===
编辑
忘了你真正想要的是什么。
Chrome 扩展无法访问用户的文件系统。此 API 仅适用于 Chrome 个应用程序。 所以如果你需要把它作为一个扩展来做,你不能在本地文件系统上保存文件。
你无法一次完成你想要的东西 app/extension,这就是 Paweł 试图告诉你的。
比较Apps APIs and Extensions APIs
应用程序不能使用 tabs
(通常不能与普通浏览器内容交互),扩展程序不能使用 fileSystem
(通常不能访问系统资源) .
您需要重新考虑您的策略,或者同时使用相互通信的扩展程序和应用程序。