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


我正在尝试将数据从弹出窗口传递到内容脚本,但我没有运气。我让它以相反的方式工作(内容 - >弹出窗口)。我想要做的就是将文本输入到弹出窗口中的输入中,然后单击一个提交按钮,该按钮会将该文本插入到网页的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);

9211
2018-05-24 10:14


起源



答案:


您需要指定要发送到哪个选项卡。喜欢这个:

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

如果你不知道哪个是标签,你可以发送给所有人(可能是个坏主意)或者让标签首先发送信息。

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


10
2018-05-24 10:21



只想指出自从Chrome 20以来已经弃用了sendRequest,并且已被sendMessage取代,这就是我遇到此问题的原因。更多信息在这个答案 stackoverflow.com/a/11587062/381010 - Joris
更新了我的回复。 - Diogo Gomes


答案:


您需要指定要发送到哪个选项卡。喜欢这个:

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

如果你不知道哪个是标签,你可以发送给所有人(可能是个坏主意)或者让标签首先发送信息。

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


10
2018-05-24 10:21



只想指出自从Chrome 20以来已经弃用了sendRequest,并且已被sendMessage取代,这就是我遇到此问题的原因。更多信息在这个答案 stackoverflow.com/a/11587062/381010 - Joris
更新了我的回复。 - Diogo Gomes