是否可以从manifest.json访问localStorage?

时间:2011-05-28 05:03:34

标签: json google-chrome google-chrome-extension

我确信这是可能的,我似乎无法弄明白。

我正在构建Chrome扩展程序,并且我已在localStorage [“url”]中设置了一个用户特定的API URL。但是,我需要将其添加到manifest.json文件中的权限。但是,我似乎无法访问清单中的localStorage。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:1)

没有

只是因为Chrome扩展程序中的清单是纯JSON,这意味着它只会被解析为文本,并且不能包含严格 JSON规范不允许的其他数据类型或文字。因此,您不能包含函数,也不能使用一个函数来返回值。

您甚至无法输入评论(实际上,您现在似乎可以发表评论,但事先并非如此)。

实现目标的一种方法是提供一个按需生成扩展的Web服务。它将在每个用户的基础上填充manifest.json,并对您的扩展程序进行压缩和签名。但是,它无法通过Chrome网上应用店安装,您需要自己托管。

答案 1 :(得分:1)

如果您担心cross origin permissions,那么API网址中的所有重要信息都是域名。

如果他们有一个公共域,那么只需在权限中声明它。如果存在一组域,则可以声明以逗号分隔的域列表。如果域名对于每个用户来说都是唯一的(很难想象),那么除了声明全范围http://*/之外你别无选择,这不是世界末日。

答案 2 :(得分:0)

我很确定这是不可能的;您必须将API网址设置为与manifest.json不同的文件,并手动请求权限。这样做的原因是为了避免权限劫持:如果您的localStorage遭到入侵,那么理论上扩展可以在没有用户干预的情况下在任何地方发出请求。