将邮件从devtools面板发送到Chrome扩展程序中的新标签页

米哈伊尔·萨尔尼科夫(Mikhail Salnikov)

我应该将数据从我的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);
});

谢谢!

wOxxOm

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

  1. 将应与异步调用的结果一起使用的代码移到回调中
  2. 等待新选项卡完全加载后再发送消息
  3. chrome.extension.getURL从后台脚本打开选项卡时不需要

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

PS manifest.json: "permissions": ["tabs"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

来自分类Dev

Chrome扩展程序将Background.js中的消息发送到内容脚本

来自分类Dev

无法使用Chrome扩展程序中的postMessage从父窗口将数据发送到iframe

来自分类Dev

在新标签页中打开Chrome扩展程序

来自分类Dev

Chrome扩展程序在新标签页中运行js

来自分类Dev

Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

来自分类Dev

Chrome扩展程序:将数据发送到使用chrome.windows.create创建的窗口

来自分类Dev

Chrome扩展程序:消息传递(将DOM发送到popup.js)返回“空”

来自分类Dev

Chrome扩展程序:将AJAX表单发送到Rails应用

来自分类Dev

Chrome扩展程序错误,尝试将数组从内容脚本发送到弹出脚本

来自分类Dev

无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

来自分类Dev

Chrome扩展程序:将AJAX表单发送到Rails应用

来自分类Dev

chrome扩展程序将选定的文本发送到其他网站

来自分类Dev

Chrome扩展程序:消息传递(将DOM发送到popup.js)返回“空”

来自分类Dev

在Chrome扩展程序中,更改发送到某些域的Ajax请求的引荐来源网址?

来自分类Dev

将数据从页面发送到 chrome 扩展

来自分类Dev

在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

来自分类Dev

将表单发送到Webmatrix中的电子邮件

来自分类Dev

在新标签页上触发Chrome扩展程序

来自分类Dev

Google Chrome扩展程序可打开“新标签页”

来自分类Dev

Chrome扩展程序仅在新标签页中正常运行

来自分类Dev

Chrome扩展程序在新标签页上打开新标签页

来自分类Dev

Chrome扩展程序-在新标签页中打开捕获的屏幕截图

来自分类Dev

如何在新标签页的Chrome扩展程序的多功能框中窃取焦点?

来自分类Dev

Chrome扩展程序:如何在新标签页中显示背景图片

来自分类Dev

简单的Chrome扩展程序:在新标签页中打开一个网址

来自分类Dev

Yii2-邮件程序-将消息发送到数据库中的电子邮件行

来自分类Dev

将邮件从SharedWorker发送到SharedWorker

来自分类Dev

将Javascript注入Chrome扩展程序的新创建的标签页中

Related 相关文章

  1. 1

    Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

  2. 2

    Chrome扩展程序将Background.js中的消息发送到内容脚本

  3. 3

    无法使用Chrome扩展程序中的postMessage从父窗口将数据发送到iframe

  4. 4

    在新标签页中打开Chrome扩展程序

  5. 5

    Chrome扩展程序在新标签页中运行js

  6. 6

    Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

  7. 7

    Chrome扩展程序:将数据发送到使用chrome.windows.create创建的窗口

  8. 8

    Chrome扩展程序:消息传递(将DOM发送到popup.js)返回“空”

  9. 9

    Chrome扩展程序:将AJAX表单发送到Rails应用

  10. 10

    Chrome扩展程序错误,尝试将数组从内容脚本发送到弹出脚本

  11. 11

    无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

  12. 12

    Chrome扩展程序:将AJAX表单发送到Rails应用

  13. 13

    chrome扩展程序将选定的文本发送到其他网站

  14. 14

    Chrome扩展程序:消息传递(将DOM发送到popup.js)返回“空”

  15. 15

    在Chrome扩展程序中,更改发送到某些域的Ajax请求的引荐来源网址?

  16. 16

    将数据从页面发送到 chrome 扩展

  17. 17

    在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

  18. 18

    将表单发送到Webmatrix中的电子邮件

  19. 19

    在新标签页上触发Chrome扩展程序

  20. 20

    Google Chrome扩展程序可打开“新标签页”

  21. 21

    Chrome扩展程序仅在新标签页中正常运行

  22. 22

    Chrome扩展程序在新标签页上打开新标签页

  23. 23

    Chrome扩展程序-在新标签页中打开捕获的屏幕截图

  24. 24

    如何在新标签页的Chrome扩展程序的多功能框中窃取焦点?

  25. 25

    Chrome扩展程序:如何在新标签页中显示背景图片

  26. 26

    简单的Chrome扩展程序:在新标签页中打开一个网址

  27. 27

    Yii2-邮件程序-将消息发送到数据库中的电子邮件行

  28. 28

    将邮件从SharedWorker发送到SharedWorker

  29. 29

    将Javascript注入Chrome扩展程序的新创建的标签页中

热门标签

归档