9

我试图将数据从弹出窗口传递给内容脚本,但我没有任何运气。尽管我用它的方式(内容 - >弹出)反过来工作。我想要做的就是将文本输入位于弹出窗口中的输入内容,然后单击一个提交按钮,将该文本插入到网页的dom中。Chrome扩展程序 - 消息从弹出窗口传递到内容脚本

这是我有:

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

回答

10

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

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

如果你不知道哪个是标签,你可以发送到所有(可能是一个坏主意),或使标签先发送信息。

欲了解更多信息,请查阅此页:Message Passing

+7

只是想指出sendRequest自Chrome 20以来已被弃用,并已被sendMessage取代,这是我遇到问题的原因。更多信息在这个答案http://stackoverflow.com/a/11587062/381010 – Joris 2013-02-18 12:20:15

+0

更新我的回应。 – 2015-09-10 13:17:14

相关问题