Chrome:在contentcript和popup.html之间传递数据

时间:2011-02-16 14:47:09

标签: javascript google-chrome-extension content-script

我有一个简单的函数,只需将location.href从contentscript传递到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 个答案:

答案 0 :(得分:2)

缺少某些参数,而且您无法使用异步回调函数中的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;
    }
});

答案 1 :(得分:0)

sendRequest已过时。

使用sendMessage