javascript - 将消息从内容脚本发送到另一个

标签 javascript google-chrome google-chrome-extension

我正在开发一个谷歌浏览器扩展程序。我的目的是将消息从我的 script1.js 发送到 script2.js。这是我在 manifest.json 中写的:

  {
    "matches": ["https://www.google.fr/"],
    "css": ["styles.css"],
    "js": ["script1.js"]
       
  },
  {
    "matches": ["my_website.html"],
    "css": ["styles.css"],
    "js": ["script2.js"]
       
  },

这是我在 script1.js 中写的:

chrome.runtime.sendMessage('hello world!!!!!!');

在 script2.js 中:

chrome.runtime.onMessage.addListener(function(response,sender,sendResponse){

alert(response);

} );

我认为我的做法不对,我想我必须使用 background.js,但我不知道该怎么做。

非常感谢。

最佳答案

正如您所说,您必须使用后台脚本。例如:

脚本1:

chrome.runtime.sendMessage({from:"script1",message:"hello!"});

背景.js

var tab2id;
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if (message.from == "script2") {
        tab2id = sender.tab.id;
    }
    if (message.from == "script1"){
        chrome.tabs.sendMessage(tab2id,message);
    }
});

脚本2.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    alert("Script1 says: " + message.message);
});
chrome.runtime.sendMessage({from:"script2"});

请记住在 list 中包含您的后台脚本:

"background": {
    "scripts": ["background.js"]
}

关于javascript - 将消息从内容脚本发送到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47313507/

相关文章:

html - CSS3 属性列数。 Chrome、Firefox 和 Safari 中的不同显示

javascript - 如何获取 ElementsByTagName 然后在悬停选定标签时使用 onmouseover?

javascript - 我们如何卡住html表格中的第一列和标题(有多行)

javascript - 仅使用 JS 确定 WebView 是否不可见

java - NPAPI 的退役和数字签名的 future

javascript - 如何在加载页面时操作页面?

javascript - 在 Chrome 沙箱中使用 WebAssembly

javascript - chrome 扩展脚本在某些页面上加载了两次甚至更多

javascript - 如何从 Hub 中删除用户?

javascript - 如何获得CSS操作图像的高度?