SendRequest не возвращается должным образом - PullRequest
0 голосов
/ 14 сентября 2011

Когда моё всплывающее окно нажимается, оно использует фоновую страницу, чтобы отправить запрос на содержание. Затем содержимое файла возвращает ответ на фоновую страницу, которая выполняет некоторую работу, а затем передает результат этой работы всплывающему окну.

Это прекрасно работает, когда я нажимаю всплывающее окно в первый раз, но если я нажимаю его снова, оно не работает. Запрос отправлен, и каждая функция нажата, но ответ от скрипта содержимого равен нулю.

Есть ли какая-то общая причина, почему это было бы? Я почесал голову, не зная, что здесь происходит.

Редактировать: (код)

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]});
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...