消息从一个内容脚本传递到另一个

时间:2016-05-05 20:08:28

标签: google-chrome google-chrome-extension

我正在使用Chrome扩展程序,我需要从扩展程序的一部分获取值到另一部分。我有一个后台脚本,在单击扩展图标时执行两个脚本。一个内容脚本从网页获取值,需要将其发送到外部脚本。单击扩展图标时,它会执行侦听消息的外部脚本。

function message(){                                         
    console.log("Listening...");                        
    var token = "";                                     

    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
            console.log("Attempting to get message...");
            console.log(sender.tab ?                    
            "from a content script:" + sender.tab.url : 
            "from the extension");                      
    if (typeof request != 'undefined'){                 
            console.log("Printing token...");           
            token = request.token;                      

            console.log(token);                         

            received = true;                            
            sendResponse({greeting: "Got Token"});      
    }                                                   
    });                                                 
}                                                           
message();   

在内容脚本中,当单击网页上的按钮时,它应该向外部脚本发送消息。这是内容脚本中的代码。

chrome.runtime.sendMessage({token: token, URL: URL},function(response)   {
    console.log("Greeting 1");
    console.log(response.greeting);                                                                                                                                                                            
    });    

当我运行该程序时,我得到了#34;倾听"从外部脚本打印出来,我得到了问候1"从内容脚本打印出来。但是,在外部脚本中,听众似乎并没有工作。我可以在它上面断点并逐步完成该过程,但它最终会跳过侦听器内的块,并在函数结束时无效。任何人都可以看到我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

我猜你是在混淆一点点。试试这段代码

chrome.runtime.sendMessage("SomeMessage");   //Content script

现在在你的background.js中收听这条消息。

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){ alert (response)});

它应该提醒您的消息。在这种情况下" SomeMessage"。