【问题标题】:How do I get the absolute path of the chrome extensions directory?如何获取 chrome 扩展目录的绝对路径?
【发布时间】:2013-06-19 15:51:49
【问题描述】:

我正在编写一个对文件系统具有完全访问权限的应用程序,并且我希望能够获取我的扩展目录的绝对路径。我该怎么做?

我的应用拥有"<all_urls>", {"filesystem": [ "write" ]} 的权限,并勾选了“允许访问文件网址”。

【问题讨论】:

  • 仅供参考,filesystem 权限仅允许对Chrome's sandboxed filesystem 的写访问,而不是用户的实际文件系统。根据您的权限,我假设您想要对实际文件系统进行读取访问,并对沙盒文件系统进行读写访问。
  • @apsillers 不,我需要两者的读写权限。我是否需要其他权限(除此之外并让用户选中“允许访问文件 URL”复选框)?
  • 据我所知,Chrome 扩展 API 无法允许对实际文件系统进行写访问(除了让用户将文件保存为下载文件)。您可以使用 NPAPI 插件,但学习曲线非常陡峭,而且该工具非常强大(如果您有安全漏洞,因此很危险)。
  • @apsillers 如果是这样,那么该复选框有什么作用?不适用吗?
  • @apsillers 是对的。如果您确实找到了一种无需用户手势即可写入扩展文件夹的方法,那是一个错误,您不应该依赖它。需要明确的是,文件系统权限不适用于所有应用程序都可以使用的沙盒文件系统。它是通过用户手势访问非沙盒文件。该复选框用于 XHR 到 file:// url,但您将无法可靠地获取路径,并且它不会 AFAIK 启用写入。

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


【解决方案1】:

如果您指的是文件系统路径,则在每个操作系统上都不同。您可以通过对扩展标识符进行文件搜索来找到它。

如果你想要一个 chrome 参考,你可以使用: chrome.extension.getURL(''); 您还可以在字符串中提供一些内容,它将为您提供引用应用程序中包含的文件所需的路径。

例子:

chrome.extension.getURL('index.html');

返回:

"chrome-extension://gbchcmhmhahfdphkhkmpfmihenigjmpp/index.html"

【讨论】:

  • 谢谢。我还需要将它们列为web_accessible吗?
  • 我相信只有当您要在内容脚本(加载到应用程序之外的网站中的脚本)中使用资源时。但是我可能错了。
  • chrome.extension 在 Chromium (linux) 上不存在,但 URL 格式正确且有效。
  • chrome.extension 仅存在于 Chrome 扩展程序的上下文中。即:如果您在现有扩展程序(甚至在 Chromium 上)上打开 JavaScript 控制台。
猜你喜欢
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2018-12-27
相关资源
最近更新 更多