Chrome扩展消息在内容和背景之间传递

时间:2015-10-10 12:10:42

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

我已经测试了几个小时,我还采取了一个,当时已知的工作,例如。看这里: https://stackoverflow.com/a/27829709/2430488

它不适合我,或者我不确定如何测试。我打开了开发人员工具以及扩展开发人员工具,但在这两个窗口中都没有记录任何内容。

我使用的代码:

的manifest.json

{
    "manifest_version": 2,

    "name": "Some test",
    "description": "https://stackoverflow.com/questions/27823740",
    "version": "0",

    "background": {
        "scripts": [
            "background.js"
        ] 
    },

    "permissions": ["tabs", "<all_urls>"],

    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["cont.js"]
        }
    ]
}

cont.js

chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {        
    if (msg.message && (msg.message == "DIMENSION")) {                          
        var dimension = getPageDiemension(document.documentElement);        
        console.log('Dimension:', dimension);
        sendResponse(dimension);       
    }
        return true;
});

getPageDiemension = function(currentDom){
    return {
        x: 0,
        y: 0,
        w: currentDom.scrollWidth,
        h: currentDom.scrollHeight
    }
}

background.js

getPageDimension = function (){
    chrome.tabs.query({active: true, highlighted: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, { message: "DIMENSION" }, function(response){
            if (response !== null) console.log('Response:', response);
            else console.log('Response is null');
        });
    }); 
    };

请帮忙,我真的不确定我做错了什么,过去几个小时我一直在查看文档,但我无法理解为什么不能正常工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

正如rsanchez所提到的,你的背景定义了一个函数getPageDimension

它永远不会被调用,所以你的扩展名什么也没做。似乎没有任何错误,你永远不会任何事情。

您需要将对getPageDimension的调用绑定到某个事件,例如点击Browser Action