检索存储在本地Chrome扩展程序的JSON

时间:2013-04-30 15:50:04

标签: google-chrome google-chrome-extension

我正在开发我的第一个Chrome扩展程序。 我想将CSV文件存储为JSON,读取内容并将其与URL进行比较。

问题:

  1. 我通常将CSV表存储在数据库中,但我没有使用此选项。在我的案例中你看到了更好的选择吗?
  2. 我有一个main.js(内容脚本)和一个script.js。内容脚本调用第二个来读取用户的URL(内容脚本似乎不能自己做)。之后我需要读取JSON文件。在script.js我有

    load: function() {
        var list;
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            list = JSON.parse(xhr.responseText);
        }
        xhr.open("GET", chrome.extension.getURL('resources/list.json'), true);
        xhr.send();
        return list;
    }
    
  3. 但它会抛出"Cannot call method 'getURL' of undefined"。我已尝试在load()中插入此main.js函数,使用list存储localStorage,然后最终在script.js内阅读,但......没有。 。信息未存储。我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是advertised limitation of Content Scripts。您的内容脚本位于DOM页面的沙箱中。虽然你的扩展程序注入了它,它几乎没有任何共享。

如果您需要单个异步请求/响应或使用chrome.runtime.sendMessage重复使用,建议您使用chrome.runtime.connect

它可以帮助您依赖自己应用中的事件,帮助您解耦代码。