Когда моё всплывающее окно нажимается, оно использует фоновую страницу, чтобы отправить запрос на содержание. Затем содержимое файла возвращает ответ на фоновую страницу, которая выполняет некоторую работу, а затем передает результат этой работы всплывающему окну.
Это прекрасно работает, когда я нажимаю всплывающее окно в первый раз, но если я нажимаю его снова, оно не работает. Запрос отправлен, и каждая функция нажата, но ответ от скрипта содержимого равен нулю.
Есть ли какая-то общая причина, почему это было бы? Я почесал голову, не зная, что здесь происходит.
Редактировать: (код)
popup:
chrome.tabs.getSelected(null, function(tab) {
makeButtons()
paint(display, tab)
});
function paint(display, tab) {
chrome.extension.getBackgroundPage().retrieveData(tab, function(data) {
paintEach(data[1])
paintEach(data[2])
paintEach(data[3])
});
}
background:
function retrieveData(tab, callback) {
if(tab) {
data = {}
data[1] = getData(1)
data[2] = getData(2)
if(tabs[tab.id]) {
sendMessage(tab.id, function(response) {
data[3] = response
callback(data)
});
}
else {
data[3] = null
callback(data)
}
}
}
function sendMessage(tabId, callback) {
chrome.tabs.sendRequest(tabId, {method: "dataRequest"}, function(response) {
if(response.method == "accepted") {
if(callback) {
callback(response)
}
}
});
}
contentScript:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "dataRequest") {
var dataElems = findData(document.body.getElementsByClassName("className"));
sendResponse({method: "questions", 1: dataElems[0], 2: dataElems[1], 3: dataElems[3]});
}
}