从弹出页面到内容脚本页面的通信

时间:2011-06-07 06:58:08

标签: google-chrome-extension message-passing

我正在开发扩展程序,但我不想使用选项页面。我使用浏览器操作(图标显示在右上角),并通过该页面创建一些首选项,然后将它们存储在localStorage中。

但是,我的内容脚本需要读取localStorage,但我知道它无法访问它。我看着传递的信息,却无法达到我想要的效果。

我在这里尝试过:

popup.js

$(document).ready(function(){
    chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        if (request.method == "getList")
            sendResponse({status: localStorage['list']});
        else
            sendResponse({}); // snub them.
        });
});

content.js

$(document).ready(function(){
    var p;
    chrome.extension.sendRequest({method: "getList"}, function(response) {
        p = response.status;
        alert(response.status);
    });
});

1 个答案:

答案 0 :(得分:6)

弹出窗口是短暂的,意味着代码仅在弹出窗口打开时存在。这意味着你的听众将会迷失。

将您的监听器代码从popup.html移至background page,然后这应该可以正常工作。