带有异步函数调用的chrome.runtime.sendMessage

时间:2013-12-30 16:10:17

标签: javascript google-chrome google-chrome-extension google-chrome-app

我有一个应用程序和谷歌浏览器的扩展程序,我希望该应用程序从扩展程序请求cookie的值,并获取值作为响应。 这是我当前的代码,它不起作用:

app.js:

Helper: {
    ...
    requestSessionId: function(sub){//pass subdomain of the cookie
        console.log('request session id for ' + sub + '.example.com');
        chrome.runtime.sendMessage('myextensionkeyorwhateverthisis',
            {getSessionId: {subdomain: sub}},
            function(response) {
                console.log('response: ', response); //nothing to see here
            }
        );

    },
    ...
}

extension.js:

chrome.runtime.onMessageExternal.addListener(
    function(request, sender, sendResponse) {
        if(sender.id == 'theappkeyorhowthisisnamed'){
            if(request.getSessionId){
                chrome.cookies.getAll({domain: request.getSessionId.subdomain + '.example.com', name: 'sid'}, function(res){
                    console.log(res[0].value);// I see this in my developer console,
                    sendResponse(res);        // but this is either not send or not received, for I cannot see any output in the app, as noted above
                    return;
                });
            }
        }
    }
);

我确信应用程序和扩展程序之间的连接有效,因为我在扩展程序中添加了一个Listener,它回复了所有具有虚拟值的消息并且工作正常。所以我认为问题出在cookie请求的回调中,但是我没有收到任何错误,所以我不知道它是什么。也许sendResponse在回调范围内不起作用?

我需要做些什么才能工作? 我也很感激每一个回答,告诉我如何以另一种方式做到这一点。

0 个答案:

没有答案