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

标签 javascript google-chrome google-chrome-extension messaging

我正在尝试将数据从弹出窗口传递到内容脚本,但我没有任何运气。不过,我让它以另一种方式工作(内容 ->弹出窗口)。我想要做的就是将文本输入弹出窗口中的输入框,然后单击提交按钮,该按钮会将文本插入到网页的 dom 中。

这是我的:

弹出窗口

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);

最佳答案

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

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

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

有关更多信息,请查看此页面:Message Passing .

关于javascript - Chrome 扩展 - 从弹出窗口到内容脚本的消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6108906/

相关文章:

javascript - 我应该为输入字段使用受控的 React 组件(安全方面)吗?

javascript - 在 Google Chrome 的开发者工具上更改 JavaScript 文件

java - Selenium 网格: DevToolsActivePort file doesn't exist (unknown error: Chrome failed to start: exited abnormally)

javascript - 在 Chrome 扩展中使用 AngularJS

javascript - 如何从 JSON 列表中获取特定数据

javascript - 变量在 ajax 函数中无法获得正确的值

javascript - ReactJS:net::ERR_HTTP2_PROTOCOL_ERROR 200 与 .NetCore 在 HTTPS

生产环境中的 JavaScript 刷新 - IIS

javascript - 将脚本加载到谷歌浏览器扩展

google-chrome - 如何在 canary 和 chrome 开发者版中启用 "Load unpacked extension"?