Доступ к переменным расширениям Chrome
Я занят созданием расширений Chrome, которые должны проверять список форматов json на наличие URL-адресов и сравнивать их при каждом посещении новой вкладки или адреса. Когда есть совпадение, оно должно что-то делать... Но сейчас я не могу получить доступ к переменным внутри функции, я думал, что это что-то с глобальными и локальными переменными, но я не могу это выяснить. Переменная, которую я не могу найти, u = request.dom;
Когда я проверяю это вне addListener в console.log
я получил неопределенный
мой код:
Background.js (загружен jquery-1.11.3.js, ampify.js):
loadedwebshops = amplify.store('webshops');
(function loadShops() {
if (typeof loadedwebshops != 'undefined') {
} else {
// load from server
$.ajax({
url: '../shoplist.json',
dataType: 'json',
data: {}
}).done(function(data, textStatus, jqXHR) {
// update the cache
amplify.store('webshops', data, {
expires: 60000
});
loadedwebshops = amplify.store('webshops');
//populate.Shops(data);
}).fail(function(jqXHR, exception) {
}).always(function() {
});
// alert("server");
if (typeof loadedwebshops === 'undefined') {
location.reload();
}
}
setInterval(loadShops, 60000);
}
)();
chrome.extension.onMessage.addListener(function(request) {
u = request.dom;
requestedUrl(u);
});
$(document).ready(function() {
var webshops = loadedwebshops["webshops"];
console.log(webshops);
function requestedUrl(u){
console.log(u);
}
});
Main.js:
var d = document.domain;
chrome.extension.sendMessage({
dom: d
});
Manifest:
{
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "icons/actions/1.png",
"default_title": "toolbar"
},
"content_scripts": [{
"all_frames": true,
"js": ["lib/jquery-1.11.3.js", "lib/amplify.js", "lib/main.js"],
"matches": ["http://*/*", "https://*/*"]
}],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"description": "extension",
"icons": {
"128": "icons/icon128.png",
"16": "icons/icon16.png",
"48": "icons/icon48.png"
},
"manifest_version": 2,
"name": "toolbar",
"version": "1.1",
"permissions": ["http://*/*", "https://*/*", "tabs", "cookies",
"notifications", "contextMenus", "webNavigation", "webRequest",
"webRequestBlocking", "unlimitedStorage", "storage"
]
}
1 ответ
Решение
Решил это... Проблема заключалась в том, что он был внутри меня другой области $(document).ready(function() {});
Новый код:
loadedwebshops = amplify.store('webshops');
(function loadShops() {
if (typeof loadedwebshops != 'undefined') {
} else {
// load from server
$.ajax({
url: '../shoplist.json',
dataType: 'json',
data: {}
}).done(function(data, textStatus, jqXHR) {
// update the cache
amplify.store('webshops', data, {
expires: 60000
});
loadedwebshops = amplify.store('webshops');
//populate.Shops(data);
}).fail(function(jqXHR, exception) {
}).always(function() {
});
// alert("server");
if (typeof loadedwebshops === 'undefined') {
location.reload();
}
}
setInterval(loadShops, 60000);
}
)();
chrome.extension.onMessage.addListener(function(request) {
u = request.dom;
requestedUrl(u);
});
var webshops = loadedwebshops["webshops"];
console.log(webshops);
function requestedUrl(u){
console.log(u);
}