从Chrome应用访问本地目录

时间:2015-01-12 21:14:26

标签: google-chrome google-chrome-extension google-chrome-app browser-extension

我正在处理一个名为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: ''
    });
});

Errors when attempting to load plugin.

2 个答案:

答案 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ł试图告诉你的。

比较Apps APIsExtensions APIs

应用无法使用tabs(并且通常无法与普通浏览器内容进行交互),扩展无法使用fileSystem(并且通常无法访问系统资源)。< / p>

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