在chrome.browserAction.onClicked上调用内容脚本function

我的问题很简单,我只是想弄清楚最简单的方法。

我的chrome扩展的当前迭代使用按钮将DIV注入到网页中,当按下该按钮时,将执行一个function。

我想在不注入DIV的情况下执行此操作,方法是在工具栏中按下浏览器按钮时在我的一个内容脚本中执行一个函数。 最简单的方法是什么? 我相信我必须使用背景页面,我在文档中看到的唯一一件事是在两端注册一些听力事件。 如果这是唯一/最简单的方法,我该怎么做呢?

是的,使用在后台脚本和内容脚本之间来回发送的消息来完成从浏览器或页面操作按钮联系内容脚本

第一步:告诉后台脚本如何在browserAction / pageAction按钮上单击

chrome.browserAction.onClicked.addListener(function(tab) { ... }); 

第2步:在browserAction.onClicked事件监听器内,您可以向内容脚本发送消息(实际上是对任何代码进行监听!):

 chrome.tabs.sendMessage(tab.id, {}); 

步骤3:在内容脚本中,为传入消息添加侦听器

 chrome.runtime.onMessage.addListener(function(request, sender, callback) { // request contains the YOURMESSAGEPAYLOAD sent above as a Javascript object literal }); 

您也可以反过来使用内容脚本中的以下内容将消息从内容脚本发送到后台脚本

 chrome.runtime.sendMessage({}); 

然后以与上面提到的相同的方式在后台脚本中使用onMessage监听器。

devnull69是正确的,你需要使用消息传递。 还可以考虑检查chromeps 。 这是我为chrome扩展编写的一个小pubsub库。 编写消息传递代码时消除了大量开销。