nativeMessaging - 本地消息传递

一.参考文档

官方文档

微软官网文档
chrome开发指南

视频参考


油管参考视频 chrome-native-message

油管源码地址


博客

Chrome Native Messaging 与本地程序之间的通信

csdn参考资料

【干货】Chrome插件(扩展)开发全攻略

github开源参考

github可参考Java项目

github开源分享项目appemit


二.官方提供示例-Python版

使用步骤:
1.在浏览器扩展中安装插件(app文件夹)
2.运行install_host.bat,添加注册表
3.运行native-messaging-example-host.bat(启动python程序)
4.在浏览器插件的html页面中调用(python程序)

浏览器端

在这里插入图片描述

这个插件包含了三个文件:manifest.json(这个是插件配置信息文件),background.js( 后台文件可以调用HTML页面),main.html(插件的主页面),main.js(与页面交互,传递消息给后台)。

  • 存在的问题:官方demo不需要background.js,本地安装插件 浏览器不显示图标,目前只能通过background.js调起主页面。
  • 前端debuger查看执行流程。

manifest.json

创建浏览器的插件配置信息文件

{
   
  "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaYhSpDCE9RPocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
  "name": "Native Messaging Example",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Send a message to a native application.",
  //app调用main.html不生效
  "app": {
   
    "launch": {
   
      "local_path": "main.html"
    }
  },
  "background" : {
    "scripts": ["background.js"] },//为了调用html
  "icons": {
   
    "128": "icon-128.png"
  },
  "permissions": [
    "nativeMessaging"//允许本地通信权限
  ]
}

main.html

调用main.js与后台通信,

<!DOCTYPE html>

<html>
  <head>
    <script src='./main.js'></script>
  </head>
  <body>
    <button id='connect-button'>Connect</button>
    
    <input id='input-text' type='text' />
    
    <button id='send-message-button'>Send</button>
    <div id='response'></div>
  </body>
</html>

mian.js

var port = null;

var getKeys = function(obj){
   
   var keys = [];
   for(var key in obj){
   
      keys.push(key);
   }
   return keys;
}


function appendMessage(text) {
   
  document.getElementById('response').innerHTML += "<p>" + text + "</p>";
}

function updateUiState() {
   
  if (port) {
   
    document.getElementById('connect-button').style.display = 'none';
    document.getElementById('input-text').style.display = 'block';
    document.getElementById('send-message-button').style.display = 'block';
  } else {
   
    document.getElementById('connect-button').style.display = 'block';
    document.getElementById('input-text').style.display = 'none';
    document.getElementById('send-message-button').style.display = 'none';
  }
}

function sendNativeMessage() {
   
  message = {
   "text": document.getElementById('input-text').value}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值