在webrequest阻止加载的脚本中使用chrome.storage

时间:2013-08-12 21:12:25

标签: google-chrome google-chrome-extension


您好,我的扩展程序有问题。 我使用webRequest.onBeforeRequest阻止了一个脚本,但当我尝试使用chrome.storage控制台时,会返回此错误Uncaught TypeError: Cannot read property 'local' of undefined

我的代码:

background.js

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
 if( details.url == "http://o1.t26.net/js/application.js?2.0.4" )
            return {redirectUrl: chrome.extension.getURL("load.js") };
    },
    {urls: ["http://o1.t26.net/*.js?2.0.4"]}, ["blocking"]);

load.js

chrome.storage.local.get('test', function (h){
console.log(h.test);
});

的manifest.json

{
"content_scripts": [{
"matches": [ "http://www.agust.in/*", "http://agust.in/*" ],
"js": ["test.js"],
"run_at": "document_start",
"all_frames": true
}
],
"description": "TEST",
"icons": {
"16": "icon_one.png",
"48": "icon_two.png",
"128": "icon_three.png"
},
"name": "Test",
"permissions": ["storage", "webRequest", "webRequestBlocking", "http://www.agust.in/*", "http://agust.in/*",  "http://o1.t26.net/*",  "http://t26.net/*"],
"version": "1.4",
"manifest_version": 2,
"web_accessible_resources": [ "load.js"],
"background": {
"scripts": ["background.js"],
"persistent": true
}
}
顺便说一下,脚本(load.js)加载完美,对不起我的BADDD英语。

1 个答案:

答案 0 :(得分:1)

您正在将正常网页中加载的脚本重定向到扩展程序中的load.js。尽管load.js来自您的extenison,但它已在网页的上下文中加载和执行,该上下文无法访问chrome.storage API。

我建议您取消该请求并将load.js注入内容脚本。