我正在开发我的第一个Chrome扩展程序。 我想将CSV文件存储为JSON,读取内容并将其与URL进行比较。
问题:
我有一个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;
}
但它会抛出"Cannot call method 'getURL' of undefined"
。我已尝试在load()
中插入此main.js
函数,使用list
存储localStorage
,然后最终在script.js
内阅读,但......没有。 。信息未存储。我做错了什么?
答案 0 :(得分:1)
这是advertised limitation of Content Scripts。您的内容脚本位于DOM页面的沙箱中。虽然你的扩展程序注入了它,它几乎没有任何共享。
如果您需要单个异步请求/响应或使用chrome.runtime.sendMessage重复使用,建议您使用chrome.runtime.connect。
它可以帮助您依赖自己应用中的事件,帮助您解耦代码。