Chrome: передача данных между contentcript и popup.html. - PullRequest
1 голос
/ 16 февраля 2011

У меня есть простая функция, которая просто передает location.href из contentcript на страницу popup.html. Это не работает. что у меня есть ..

в popup.html ..

        chrome.tabs.getSelected(null,function(tab)
            {
            chrome.tabs.sendRequest({req: "getlocation"}, function(response){
            return response.reply;
            });
            });

в моем содержании ...

        case "getlocation":
        sendResponse({
            reply: location.href
            });
     break;

Почему мой код не работает?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Некоторые параметры отсутствуют, плюс вы не можете использовать return из функции асинхронного обратного вызова.

popup.html:

function getCurrentUrl(callback){
    chrome.tabs.getSelected(null,function(tab){
        chrome.tabs.sendRequest(tab.id, {req: "getlocation"}, function(response){
            callback(response.reply);
        });
    });
}

getCurrentUrl(function(url){
    console.log("url:", url);
});

content_script.js:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    switch(request.req) {
        case "getlocation": 
            sendResponse({
                reply: window.location.href
            });
            break;
    }
});
0 голосов
/ 01 февраля 2014

sendRequest устарел.

использование sendMessage

...