Chrome扩展消息传递 - 包含代码

时间:2011-05-02 16:21:41

标签: javascript function google-chrome-extension

我有一个名为file.js的脚本,它创建了变量“found”。我想将varibale“found”的值发送到popup.html

中的文本框

在file.js中(我知道找到的varible正在工作,使用警报进行测试)。

chrome.extension.sendRequest({foundlinks: found}, function(response) {
 console.log(response);
});

在Popup.html中:

function pulllinks(){

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {

    document.getElementById("box").value = request.foundlinks;

  sendResponse({});
});

在popup.html中的表单上:

<input type = "button" onclick="pulllinks();" name = "box" id="box" value = "Grab Links From Page"  /> 

然而,它没有做任何事情。有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

首先,onRequest的听众应该从一开始就存在,所以将其移到pulllinks函数之外。其次,如何在弹出窗口打开时确保你的sendRequest被解雇?

答案 1 :(得分:1)

您需要以相反的方向发送请求 - 从弹出窗口到内容脚本:

<强> popup.html:

function pulllinks(){
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {cmd: "findLinks"}, function(response) {
            document.getElementById("box").value = response.foundlinks;
        });
    });

}

<强> file.js:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if(request.cmd == "findLinks") {
        //calculate "found" value and send it back
        sendResponse({foundlinks: found});

    }
});