Javascript 将消息从devtools面板发送到Chrome extensions中的新选项卡

Javascript 将消息从devtools面板发送到Chrome extensions中的新选项卡,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我应该将数据从devtools面板发送到选项卡。当我使用chrome.tabs.sendMessage发送邮件时,为什么没有收到 panel.js $(".options").on("submit", "form", function(e) { e.preventDefault(); newTabPort = chrome.runtime.connect({ name: "new tab" }); newTabPort.postMessage($(this).serializeArr

我应该将数据从devtools面板发送到选项卡。当我使用chrome.tabs.sendMessage发送邮件时,为什么没有收到

panel.js

$(".options").on("submit", "form", function(e) {
  e.preventDefault();
  newTabPort = chrome.runtime.connect({ name: "new tab" });
  newTabPort.postMessage($(this).serializeArray());
});
background.js

chrome.runtime.onConnect.addListener(function(port) {
  port.onMessage.addListener(function(message) {
    console.log(message);
  });

  if (port.name == "new tab") {
    chrome.tabs.create({'url': chrome.extension.getURL('page/request_sending_page.html')}, function(tab) {});
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      var activeTab = tabs[0];
      chrome.tabs.sendMessage(activeTab.id, {message: "olololololololo"});
    });
  }
});
my_extension_page.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  $("body").append("Hello world <br>");
  $("body").append(request.message);
});
chrome.runtime.onMessage.addListener(函数(请求、发送方、发送响应){
$(“body”)。追加(“Hello world
”; $(“body”).append(request.message); });

谢谢大家!

所有带有函数回调的Chrome API都是异步的,因此在您的代码中,
Chrome.tabs.create
是在整个函数代码完成后执行的,因此下一行的
Chrome.tabs.query
不会看到新创建的选项卡

  • 将应该与异步调用的结果一起工作的代码移到回调中
  • 在发送消息之前,请等待新选项卡完全加载
  • 从后台脚本打开选项卡时,不需要
    chrome.extension.getURL


  • p.S.manifest.json:
    “权限”:[“选项卡”]
    所有带有函数回调的Chrome API都是异步的,因此在您的代码中,
    Chrome.tabs.create
    是在整个函数代码完成后执行的,因此下一行的
    Chrome.tabs.query
    不会看到新创建的选项卡

  • 将应该与异步调用的结果一起工作的代码移到回调中
  • 在发送消息之前,请等待新选项卡完全加载
  • 从后台脚本打开选项卡时,不需要
    chrome.extension.getURL


  • p.S.manifest.json:
    “权限”:[“选项卡”]

    这是我的扩展页。这是当我写这个问题的时候,我不小心写错了名字。这是我扩展名的一页。这是我写问题时不小心写错了名字的文件中执行的代码。
    chrome.tabs.create({url: '/page/request_sending_page.html'}, function(tab) {
        var newTabId = tab.id;
        chrome.tabs.onUpdated.addListener(function onComplete(tabId, info, tab) {
            if (tabId == newTabId && info.status == "complete") {
                chrome.tabs.onUpdated.removeListener(onComplete);
                chrome.tabs.sendMessage(tabId, {message: "olololololololo"});
            }
        });
    });