Chrome扩展程序 - 从弹出窗口到内容脚本的消息传递

15

我试图将数据从弹出窗口传递到内容脚本,但我没有成功。不过,我已经成功地让内容脚本将数据传递给了弹出窗口。我想要做的就是在弹出窗口中输入文本并点击提交按钮,将该文本插入到网页的DOM中。

这是我的代码:

popup.html

chrome.extension.sendRequest({action:'start'}, function(response) {
    console.log('Start action sent');  
});

contentscript.js

function startExtension() { console.log('Starting Extension'); }

function stopExtension() { console.log('Stopping Extension'); }

function onRequest(request, sender, sendResponse) {
    if (request.action == 'start')
        startExtension()
    else if (request.action == 'stop')
        stopExtension()
    sendResponse({});
}

chrome.extension.onRequest.addListener(onRequest);
1个回答

13

你需要指定要发送到哪个选项卡。像这样:

chrome.tabs.sendMessage(tab.id, {action:'start'}, function(response) {
    console.log('Start action sent');
});

如果您不知道哪个是选项卡,您可以向所有选项卡发送信息(可能是一个坏主意),或者让选项卡先发送信息。

有关更多信息,请查看此页面:消息传递


8
只想指出,自Chrome 20以来,sendRequest已经被弃用,并已被sendMessage替换,这就是我遇到问题的原因。更多信息请参见此答案https://dev59.com/pmox5IYBdhLWcg3wl1T4#11587062。 - Joris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接