Google Chrome расширение обмена сообщениями фон с контекстом - PullRequest
1 голос
/ 19 июня 2011

Я пишу расширение для Google Chrome. Сценарий содержимого никогда не видит, что запрос sendNextProfile был отправлен с фоновой страницы. По крайней мере, сообщение «ПОЛУЧЕННЫЙ ЗАПРОС НА СЛЕДУЮЩИЙ ПРОФИЛЬ» никогда не появляется в журнале консоли, и новый фон не виден в фоновом режиме.

ЗДЕСЬ КОД ИЗ ПИСАНИЯ СОДЕРЖИМОГО

//send request for first profile
var currentProfile=0;
chrome.extension.sendRequest({cmd: "openProfile", url: profileLinks[currentProfile]});

//listen for request to send next profile
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if(request.cmd == "sendNextProfile") {
        console.log("RECEIVED REQUEST FOR NEXT PROFILE");
        ++currentProfile;
        chrome.extension.sendRequest({cmd: "openProfile", url: profileLinks[currentProfile]});
    }
});

ЗДЕСЬ КОД ИЗ ФОНОВОЙ СТРАНИЦЫ

//detect when message tab is closed and request new profile
//var closedTabId=null;
chrome.tabs.onRemoved.addListener(function(tabid, removeInfo) { 
    console.log("TAB CLOSED "+tabid);
    if (tabid==msgTabId) {
        chrome.extension.sendRequest({cmd: "sendNextProfile"});
        console.log("REQUESTED NEW PROFILE");
    }   
});

В фоновом режиме консольное сообщение выглядит так, как ожидается, поэтому кажется, что запрос отправлен. Так что с этим кодом?

1 Ответ

1 голос
/ 19 июня 2011

Вместо:

chrome.extension.sendRequest({cmd: "sendNextProfile"});

должно быть:

chrome.tabs.sendRequest(tabId, {cmd: "sendNextProfile"});

Но если ваша вкладка удалена, отправлять запрос на эту вкладку бессмысленно, так как она еще не существует. Может быть, вам нужно отправить его на другую вкладку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...