从 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(通常不能访问系统资源) .

您需要重新考虑您的策略,或者同时使用相互通信的扩展程序和应用程序。