直接从内容脚本谈话到扩展?或者我们必须通过后台脚本?

时间:2018-01-14 22:16:46

标签: javascript google-chrome google-chrome-extension

简单的问题 - 关于Chrome扩展程序 - 有没有办法直接从内容脚本与扩展程序对话,或者我们是否必须先通过后台脚本?现在,看起来我的内容脚本只能通过后台脚本与扩展程序通信。

这就是我所拥有的:

// content script:
let port = chrome.runtime.connect();
port.postMessage({from: 'content-script'});

// background script:
chrome.runtime.onConnect.addListener(function (port) {
  port.onMessage.addListener(function (msg) {

    // msg is from content-script
    // "forward" the message to the extension
    chrome.runtime.sendMessage(msg, function (response) {
      console.log('response from extensions:', response);
    });
  });
});

// extension runtime (what is a good name for it?)
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
  if (msg && msg.refresh === true) {
    window.location.href = msg.url;
  }
});

所以正在发生的事情是,在内容脚本中,如果我想向扩展程序发送消息,我会将消息发送到后台脚本,后台然后将消息转发到扩展本身。就像我说的那样,有没有办法直接从内容脚本与扩展进行通信,而无需通过后台脚本?怎么样?

0 个答案:

没有答案