如何在Chrome扩展弹出窗口和内容脚本之间发送消息

How to send a message between Chrome extension popup and content script?

本文关键字:脚本 之间 消息 窗口 Chrome 扩展      更新时间:2023-09-26

根据Google教程,我将从弹出脚本向内容脚本发送一条消息。消息传递正确,但当我调用响应回调时,我会收到以下错误:

Attempting to use a disconnected port object

这是popup.js:

chrome.tabs.query(
  { active: true, currentWindow: true }, 
  function(tabs) {
    chrome.tabs.sendMessage(
      tabs[0].id, 
      { greeting: "hello" }, 
      function(response) {
        console.log(response);
      });
});

这是content.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    sendResponse('goodbye'); // <- Error here
  });

如何发送此消息并得到回复?

这是由于内容页面上的警报导致弹出窗口关闭。这反过来又断开了弹出窗口和内容脚本之间的连接。

此示例演示向所选选项卡中的内容脚本发送消息。

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
    console.log(response.farewell);
  });
});

参考链接