在Chrome中的两个标签之间传输数据的最佳方式是什么?

时间:2018-01-08 23:23:58

标签: google-chrome google-chrome-extension

我需要使用chrome扩展程序将数据从一个网站表单传输到另一个网站表单。

我有基本文件:

  • 的manifest.json
  • popup.html
  • content.js
  • background.js

我可以使用content.js获取数据:

let title = document.getElementById("title").value;

chrome.runtime.sendMessage(
    {
        title: title,
    }
)

如何将其发送到其他标签?

修改

在我的background.js

chrome.runtime.onMessageExternal.addListener (
    function (request, sender, sendResponse) {
        alert(request.title)
});

2 个答案:

答案 0 :(得分:1)

每当你需要在两个实体之间转移东西时,你需要一个共同的媒介。无论是声音(空气)还是单词(语言)。

在这种情况下,您需要将数据从一个网站传输到另一个网站。可能的常见媒介是: -

  1. 服务器
  2. Chrome扩展程序(通过后台)
  3. 如果是服务器,则需要确保这一点 1.来自user1的消息未到达user2 2.来自site1的消息应该发送到正确的收件人站点

    如果是chrome扩展,你只需要确保#2所以绝对采用chrome扩展后台进程是一种更好的方法。

    工作流

    Site_1_Content_Script ---> Background --- > Site_2_Content_Script
    

    具有伪代码的解决方案

    1. 从“站点1”,“使用消息和收件人详细信息向后台发送消息”
    2.     chrome.runtime.sendMessage({
            message: message.,
            source: source_domain,
            destination: destination_domain
          }, function(resp) { });
      
      1. 在后台接收讯息并将其发送至其他标签
      2.     chrome.runtime.onMessage.addListener(function(request, sender, sendResp) {
              chrome.tabs.query({ url: request.destination_domain }, function(tabs) {
              // Send message to each tab matching that domain/url
            }
        
        1. 接收消息内容脚本

答案 1 :(得分:0)

无法将其从一个内容脚本(标签)发送到其他内容脚本。 您需要通过后台页面脚本来完成。

会是这样的:

  

从CS向BG页面发送消息 - >在BG页面上处理消息   将其发送到另一个标签

您可以在messaging here找到文档。