Chrome扩展程序中的消息传递示例

Rrfusco

我正在使用Google教程中的示例,发现很难将简单的消息从弹出窗口传递到内容脚本。

您能否提供一些有关如何传递简单消息并在控制台日志或警报中查看它的建议?

manifest.json

{
  "manifest_version": 2,

  "name": "msg-test",
  "description": "message test",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },

  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },

  "content_scripts": [{
     "matches": ["http://*/*","http://www.site.com/*"],
     "js": ["content.js"],
     "run_at": "document_end"
  }],  

  "permissions": [
    "tabs",
    "http://*/*"
  ]  
}

background.js

chrome.runtime.onConnect.addListener(function(port){
  port.postMessage({greeting:"hello"});
});

content.js

var port = chrome.runtime.connect({name:"content"});
port.onMessage.addListener(function(message,sender){
  if(message.greeting === "hello"){
    alert(message.greeting);
  }
});

popup.js

window.onload = function() {

    document.getElementById('btn2').onclick = function() {
       alert("button 2 was clicked");
     }; 

    document.getElementById('btn1').onclick = function() {
        alert("button 1 was clicked");
     }; 


}

*注意:在此示例中,当页面与manifest.json匹配时,内容脚本将触发,并显示警告框。

aclave1

首先,我不会在您的弹出窗口和内容脚本之间传递消息。我会在您的背景页面和内容脚本之间传递消息您的弹出页面应仅用于显示一些与应用程序交互的用户界面。

话虽如此,我将向您展示在背景和内容脚本之间传递消息的方法。

在您的内容脚本中:

//This line opens up a long-lived connection to your background page.
var port = chrome.runtime.connect({name:"mycontentscript"});
port.onMessage.addListener(function(message,sender){
  if(message.greeting === "hello"){
    alert(message.greeting);
  }
});

在您的背景页面中(可能是您的弹出窗口?但我不建议这样做)

chrome.runtime.onConnect.addListener(function(port){
  port.postMessage({greeting:"hello"});
});

这是将要发生的事件的顺序:

  1. 您的应用程序会将您的内容脚本注入页面
  2. 您的内容脚本将打开一个端口以与后台脚本进行通信。
  3. 系统将通知您的后台脚本端口已打开,从而允许该端口向其发送消息或向其附加消息侦听器。

在后台脚本或内容脚本中,您可以使用收听消息port.onMessage.addListener()只要该端口在范围内。使用端口更容易掌握,并允许简单的双向通信!

编辑:

如果您想将消息从弹出脚本传递到后台页面,请使用完全相同的方法:

var port   =   chrome.runtime.connect({name: "popup-port"});
port.postMessage({status:"poppedup"});

编辑2:

要将您的用户导航到新页面,请执行以下操作:

function navigateToPage(url){
    chrome.tabs.query({url: url}, function(tabs) {
        var tab = tabs[0];
        return tab ? chrome.tabs.update(tab.id, {active:true}) : chrome.tabs.create({url: url});
    });
}
});

该功能的作用是检查是否有一个带有您要访问的URL的选项卡,如果有,请切换到该选项卡,否则,请创建具有该URL的选项卡并导航至该选项卡。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序消息传递

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息

来自分类Dev

Chrome扩展程序消息传递-如何传递HTML

来自分类Dev

Chrome扩展程序中内容脚本和弹出脚本之间的消息传递

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

Chrome 扩展程序中的沙盒页面通过 iframe 传递消息时抛出错误

来自分类Dev

在Chrome打包的应用和扩展程序之间传递消息

来自分类Dev

Chrome扩展程序消息从弹出窗口传递到内容

来自分类Dev

Chrome扩展程序-具有多个端口的消息传递

来自分类Dev

Chrome扩展程序内容脚本消息传递使应用程序无法在赛普拉斯环境中运行

来自分类Dev

带有本机应用消息传递功能的chrome扩展的工作示例

来自分类Dev

Chrome扩展程序消息队列

来自分类Dev

消息从本地python传递到chrome扩展

来自分类Dev

Windows Chrome扩展程序本机消息传递只能收到第一个响应

来自分类Dev

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

来自分类Dev

在内容和背景之间传递的Chrome扩展程序消息不起作用

来自分类Dev

Chrome扩展程序消息传递不起作用(background.js到content.js)

来自分类Dev

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

来自分类Dev

Chrome 扩展程序 - 使用消息传递的后台页面表单提交。表单只提交一次

来自分类Dev

用户之间的Chrome扩展程序消息

来自分类Dev

从firefox扩展程序到Mac应用程序的消息传递

来自分类Dev

从Firefox扩展程序到Mac应用程序的消息传递

来自分类Dev

在注入的脚本和Google Chrome扩展程序代码/内容脚本之间传递消息的最安全方法是什么?

来自分类Dev

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

来自分类Dev

无法在Chrome扩展程序中从后台页面向内容脚本发送消息

来自分类Dev

Chrome扩展消息传递API-检测端口何时关闭

来自分类Dev

Chrome 扩展消息传递:sendResponse 返回空对象

Related 相关文章

  1. 1

    Chrome扩展程序消息传递

  2. 2

    从Chrome扩展程序中的内容脚本传递消息

  3. 3

    从Chrome扩展程序中的内容脚本传递消息

  4. 4

    Chrome扩展程序消息传递-如何传递HTML

  5. 5

    Chrome扩展程序中内容脚本和弹出脚本之间的消息传递

  6. 6

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  7. 7

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  8. 8

    Chrome 扩展程序中的沙盒页面通过 iframe 传递消息时抛出错误

  9. 9

    在Chrome打包的应用和扩展程序之间传递消息

  10. 10

    Chrome扩展程序消息从弹出窗口传递到内容

  11. 11

    Chrome扩展程序-具有多个端口的消息传递

  12. 12

    Chrome扩展程序内容脚本消息传递使应用程序无法在赛普拉斯环境中运行

  13. 13

    带有本机应用消息传递功能的chrome扩展的工作示例

  14. 14

    Chrome扩展程序消息队列

  15. 15

    消息从本地python传递到chrome扩展

  16. 16

    Windows Chrome扩展程序本机消息传递只能收到第一个响应

  17. 17

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

  18. 18

    在内容和背景之间传递的Chrome扩展程序消息不起作用

  19. 19

    Chrome扩展程序消息传递不起作用(background.js到content.js)

  20. 20

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

  21. 21

    Chrome 扩展程序 - 使用消息传递的后台页面表单提交。表单只提交一次

  22. 22

    用户之间的Chrome扩展程序消息

  23. 23

    从firefox扩展程序到Mac应用程序的消息传递

  24. 24

    从Firefox扩展程序到Mac应用程序的消息传递

  25. 25

    在注入的脚本和Google Chrome扩展程序代码/内容脚本之间传递消息的最安全方法是什么?

  26. 26

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

  27. 27

    无法在Chrome扩展程序中从后台页面向内容脚本发送消息

  28. 28

    Chrome扩展消息传递API-检测端口何时关闭

  29. 29

    Chrome 扩展消息传递:sendResponse 返回空对象

热门标签

归档