js程序运行时在本机与外部app交互

news2025/1/11 11:00:51

js程序运行时在本机与外部app交互

目录

js程序运行时在本机与外部app交互

一、序言

1.1、问题

1.2、简要回答

二、原理

2.1、插件/web扩展/应用配置/权限

2.2、获取权限-原生应用交换信息的权限nativeMessaging

2.2.1、runtime(运行时的API)

2.3、连接本地应用程序的方法

三、示例


一、序言

        最近,有朋友问这样的问题,而后又反复有些朋友在追问,索性将其整理出来:

1.1、问题

        想问下 谁有办法在app内置浏览器打开外部浏览器?

1.2、简要回答

        分平台————调用操作系统shell打开浏览器这个app

        如果你的app为手机端js应用,一切从这里开始:
manifest.json - Mozilla | MDN

权限 - permissions - Mozilla | MDN

 

二、原理

       这里呢,它提供的方法,与Delphi或c++ Builder原生应用程序开发中,所采用的app与外部app通信的类似方法(分平台的manifest.xml配置:AndroidManifest.xml、Entitlement.iOS.xml、Entitlement.OSX.xml等;windows或linux平台直接调OS功能)

2.1、插件/web扩展/应用配置/权限

        Add-ons/WebExtensions/manifest.json/permissions

权限 - permissions - Mozilla | MDN

        Chrome的差异化

        和 Chrome 相比,WebExtensions 所支持的 native messaging 有 2 个主要区别:
        在 WebExtensions 中,原生应用的清单中的 "allowed_extensions" 字段是一个由 extension ID 组成的数组,而在 Chrome 中,清单中的 "allowed_origins" 字段是一个由 "chrome-extension" URLs 组成的数组;你需要明确自己 extension 的 ID(因为在原生应用的清单中,extension ID 将会在被用来识别此 extension 是否被允许与原生应用通信);
        原生应用清单的存储位置不一样。

2.2、获取权限-原生应用交换信息的权限nativeMessaging

        manifest.json/permissions/nativeMessaging

与本地应用通信 - Mozilla | MDN

        extension 必须在 manifest.json 中获得"nativeMessaging" 权限。同时,原生应用也需要在其清单中的 "allowed_extensions" 字段中包含 extension 的 ID 来表示允许该 extension 与自己进行通信。

        这样,extension 就可以通过 runtime运行时的API 原生应用进行 JSON 数据通信了。原生应用可以通过标准输入/输出来接受/返回数据与 extension 通信

2.2.1、runtime(运行时的API)

runtime - Mozilla | MDN

2.2.1.1、基于连接的通信

        调用 runtime.connectNative() 函数并传参
2.2.1.2、无连接的通信

        调用 runtime.sendNativeMessage() 函数并传参

2.3、连接本地应用程序的方法

        Add-ons/WebExtensions/API/runtime/connectNative

连接本地应用程序方法 - runtime.connectNative() - Mozilla | MDN

三、示例

https://github.com/mdn/webextensions-examples/tree/main/native-messaging

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《微服务实战》 第十四章 RabbitMQ应用

前言 一般MQ用于系统解耦、削峰使用,常见于微服务、业务活动等场景。 1、RabbitMQ概念概念 RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。 1.1、生产者和消费者 Producer:生产者,就是投递消息的一方。消息一般可以包含2个部分:消息体和标签…

Vue3+i18n多语言动态国际化设置步骤

1、技术介绍 i18n:Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中 i18n的官网地址安装 | Vue I18n (kazupon.github.io) 2、插件安装 npm install vue-i18n9 --save需要注意的是vue3最好使用9.x以上的版本! 3、创建i…

夏日挂脖风扇方案开发设计

夏日挂脖风扇是一种便携式的风扇设备,通过挂在用户的脖子上,为用户提供清凉的风力降温。在夏季高温天气中,挂脖风扇成为了人们追逐的热门产品之一。为了满足市场需求,夏日挂脖风扇的方案开发设计需要考虑多个方面,包括…

Class 09 - Data Frame和查看数据

Class 09 - Data Frame和查看数据 DataFrametibbleshead()str()colnames()mutate()创建 Dataframe DataFrame 在我们开始做数据清洗或者检查数据是否存在偏差之前,我们需要先将我们的数据转换成合适的格式方便我们做后续的处理。 这就要说到DataFrame了。因为他很…

CSDN programmer_ada what the hell

CSDN programmer_ada 1、今天博客收到了1条评论,莫名其妙。2、查看这个账户 原来是CSDN官方机器人3、貌似领了红包 就会自动关注发红包的账户 1、今天博客收到了1条评论,莫名其妙。 一定要坚持创作更多高质量博客哦, 小小红包, 以资鼓励, 更多创作活动请…

【ClickHouse】什么是ClickHouse?CK入门

文章目录 一、ClickHouse入门1、列式存储2、DBMS的功能3、多样化引擎4、高吞吐写入能力5、数据分区与线程级并行6、性能对比7、官网 二、ClickHouse安装1、准备工作2、单机安装 三、ClickHouse的数据类型1、整型2、浮点型3、布尔型4、Decimal型6、枚举类型7、时间类型8、数组 一…

好程序员:女生学Java好学吗?女生学Java有什么优势?

小源经常会听到女生咨询适不适合学习Java开发的问题,提出这种问题归根结底还是缺乏性别自信,默认女性比男性弱。实际上这个问题并不存在,男女平等才是正确的思维,当然,也为了解开女生们的心结,这里好程序员…

开发微信公众号本地调试+-+cpolar内网穿透

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 转载自cpolar内网穿透的文章:微信公众号开发:对接本地开发…

股票?看我用python采集数据制作成交量图表

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 开发环境 & 第三方模块: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requests: pip install requests 爬虫 pyecharts: pip install pyecharts 数据分析 pandas: pip install pandas 数据分析 基本流…

C++常用的支持中文的GUI库Qt 6之一:下载、安装与简单使用

C常用的支持中文的GUI库Qt 6之一:下载、安装与简单使用 因为Qt发展变化较快,网上许多介绍Qt的下载、安装与使用已过时,初学者常因行不通而受挫,故此发布本文,以Qt 6.2.4开源版在Windows 10安装与使用为例介绍。 C好用…

Kubernetes 之7大CNI 网络插件用法和对比

Kubernetes 它需要网络插件来提供集群内部和集群外部的网络通信。以下是一些常用的 k8s 网络插件: Flannel:Flannel 是最常用的 k8s 网络插件之一,它使用了虚拟网络技术来实现容器之间的通信,支持多种网络后端,如 VXLA…

SpringSecurity权限管理基本概念和整体架构介绍

文章目录 一、权限管理1、认证2、授权3、对权限控制,现有的解决方案 二、SpringSecurity简介1、官方定义2、历史 三、整体架构1、认证AuthenticationManagerAuthenticationSecurityContextHolder 2、授权AccessDecisionManagerAccessDecisionVoterConfigAttribute 一…

SQL注入:sqli第一关详细讲解

一、实验环境: Apache2.4.39 FTP0.9.60 MySQL5.7.26 PHP 5.3.29(注意PHP的版本不应过高,否则会导致sqli安装失败) sqli 二、实验步骤 第一步:在id1后加入一个闭合符号,如果报错,再在后面加上 -- qwe将后面注释掉…

vivado中的FPGA时钟管理单元PLL学习记录

vivado中的FPGA时钟管理单元PLL学习记录 CMT简介一、PLL IP的使用1、ip调用 2、生成的频率限制二、PLL实现原理 三、使用过程中的问题程序注意事项 CMT简介 FPGA中时钟管理模块(CMT)包括PLL和MMCM,用于将时钟倍频(比如输入时钟25M&#xff0…

第三方实验室云LIS系统

本套云LIS系统基于B/S架构的实验室管理系统,整个系统的运行基于WEB层面,只需要在对应的工作台安装一个浏览器软件有外网即可访问。SaaS服务,无需部署,开通账号接口快速入门使用,集齐前处理、检验、报告、质控、统计分析…

测试自动化_Katalon

测试自动化_Katalon 1.概述 ​ Katalon界面的自动化测试工具,简称KS,于2015年推出。是开源的,提供的版本有免费的版本,还有企业版是收费的。如下图。其中的服务台功能应该是持续继承的支持。可试用一个月。 ​ 最初是支持Web UI…

Baumer工业相机堡盟工业相机通过BGAPISDK使用图像回调函数全帧率保存图像 (C#)

Baumer工业相机堡盟工业相机通过BGAPISDK使用图像回调函数全帧率保存图像 (C#) Baumer工业相机Baumer工业相机全帧率保存的技术背景Baumer工业相机通过BGAPISDK使用相机图像回调函数1.引用合适的类文件2.通过BGAPISDK在相机图像回调函数全帧率保存 Baume…

2023年湖北建筑电工报名需要什么资料 ?报考条件是什么?启程别

2023年湖北建筑电工报名需要什么资料 ?报考条件是什么?启程别 建筑电工证,适合在建筑工地上、建筑公司里面使用,和应急管理局的电工证是不同的!建筑电工证也称之为建筑特操,统称建筑施工特种作业操作资格证…

如何成为ITSMS、ISMS审核员

一、管理体系审核员的注册领域 管理体系审核员包括质量管理体系(QMS)、环境管理体系(EMS)、职业健康安全管理体系(OHSMS)、食品安全管理体系(FSMS)、危害分析与关键控制点&#xff0…

Scala学习(六)---apply方法和单例对象

文章目录 1.Apply方法2.单例模式 1.Apply方法 Scala中实例化一个类,可以不用new , 其原因 其实就是 apply 方法 apply方法的调用约定: 用括号传递给类实例或者单例对象名一个或者多个对象的时候 scala会在对应的类或者对象中查找apply方法 且…