Javascript 铬合金延长线– ;正在尝试在后台和第二个内容脚本(?)之间发送消息

Javascript 铬合金延长线– ;正在尝试在后台和第二个内容脚本(?)之间发送消息,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在开发我的第一个Chrome扩展,一切都很顺利,你可以在这里看到。不过,我在这里写的问题还没有出现在Github上 我的扩展的背景脚本当前与您打开扩展的任何页面上的注入内容脚本对话。那很好 不过,我现在要做的是为首次使用该扩展创建一个入职页面(html)。它给出了一个小的介绍句,然后要求你打开分机。在这一点上,我假设我会使用同样的chrome.tabs.sendMessage和chrome.runtime.onMessage,它们适用于后台脚本和注入内容脚本。因为后台脚本似乎会向当前活动的选

我正在开发我的第一个Chrome扩展,一切都很顺利,你可以在这里看到。不过,我在这里写的问题还没有出现在Github上

我的扩展的背景脚本当前与您打开扩展的任何页面上的注入内容脚本对话。那很好

不过,我现在要做的是为首次使用该扩展创建一个入职页面(html)。它给出了一个小的介绍句,然后要求你打开分机。在这一点上,我假设我会使用同样的
chrome.tabs.sendMessage
chrome.runtime.onMessage
,它们适用于后台脚本和注入内容脚本。因为后台脚本似乎会向当前活动的选项卡发送一条消息,而该选项卡上的任何活动脚本都可以拾取该消息。考虑到这不起作用,我想情况并非如此

background.js中,当它打开时,我收到了以下消息:

chrome.browserAction.onClicked.addListener(function(tab) {
    toggle = !toggle;
    if(toggle){
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            tabId = tabs[0].id;
            chrome.tabs.sendMessage(tabId, {"whatToDo": "on"});
        });
    }
});
在加载到入职HTML页面的脚本中,我得到:

function testMeasure() {
    chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
        var whatToDo = message.whatToDo;
        if (whatToDo == "on") {
            console.log("Measure is on");
            dialogTwo.innerHTML = '<p>Now highlight some text</p>';
        };
    });
};
函数testMeasure(){
chrome.runtime.onMessage.addListener(函数(message、sender、sendResponse){
var whatToDo=message.whatToDo;
如果(whatToDo==“开”){
控制台日志(“测量打开”);
dialogTwo.innerHTML='现在突出显示一些文本;
};
});
};
--

2月24日更新

触发testMeasure(),我得到以下错误:

未捕获类型错误:无法读取未定义的属性“addListener”

--

我也试着用在扩展中注入其他内容脚本的相同方式注入脚本,但没有起到任何作用

因为我主要是一名设计师,所以我对这一切的掌握都很差。所以请用简单的语言解释

您只需要使用而不是
chrome.tabs.sendMessage
。第二个仅用于与内容脚本通信

扩展页面中加载的脚本不是内容脚本,它们具有与后台页面相同的权限。

您只需使用而不是
chrome.tabs.sendMessage
。第二个仅用于与内容脚本通信


扩展页面中加载的脚本不是内容脚本,它们具有与后台页面相同的权限。

您是否执行过testMeasure()?@DanielHerr我执行过,是的,对不起。应该提到它抛出的错误。更新。我刚刚测试了你的代码(没有
testMeasure()
wrapper),它运行良好。提示:您不需要在后台脚本中调用
chrome.tabs.query
,因为您已经从click listener获得了
tab
。您是否执行过testMeasure()?@DanielHerr我执行过,是的,对不起。应该提到它抛出的错误。更新。我刚刚测试了你的代码(没有
testMeasure()
wrapper),它运行良好。提示:您不需要
chrome.tabs.query
调用后台脚本,因为您已经从click listener获得了
tab
。似乎已经完成了这个技巧,谢谢!这一点,以及使用
chrome.runtime.onInstalled
chrome.tabs.create
打开页面,解决了我遇到的任何问题。似乎已经解决了问题,谢谢!这以及使用
chrome.runtime.onInstalled
chrome.tabs.create
打开页面,解决了我遇到的任何问题。