写点什么

用 Chrome,Edge,360 等浏览器如何调用底层硬件模块?

作者:非也
  • 2024-01-30
    广东
  • 本文字数:1246 字

    阅读完需:约 4 分钟

用Chrome,Edge,360等浏览器如何调用底层硬件模块?

 通常情况下,各种标准浏览器无法调用底层硬件外设模块,如指纹仪,身份证读卡器等;需要软件厂商开发 Chrome 扩展,或者相关插件,这种开发工作门槛较高,维护这样一个开发团队成本也高,不划算。力麒集团的“政务浏览器”产品提供了一个简洁易用的方案。政务浏览器启动后,可以以“中间件”模式运行;该模式下浏览器在后台运行,将硬件模块的接口暴露成 Http 调用,也可以将模块调用以悬浮的工具栏呈现。具体设置及调用方法如下。

1、设置政务浏览器的运行模式为“中间件模式”如下图,打开菜单“常用设置”,将运行模式设置为“中间件模式”,设置后,浏览器重启生效。



中间件模式的浏览器启动后,最小化到系统托盘,可以打开设置界面进行设置。可以将各类插件工作以悬浮工具栏的模式呈现,如下图。


2、开启接口 http 服务,设置白名单从右上角系统菜单,打开“管控中心”,确保 http server 已开启;确保应用的地址已经加入到白名单。如下图。


3、在 webapp 中引入政务浏览器的 jssdk,并初始化 web 应用调用政务浏览器封装的外设模块,只要引入jssdk即可;该 Js SDK 有如下优点。

1)、随着浏览器的升级 jssdk 不用升级;2)、不管是页面在 Chrome 运行,然后通过 http 协议调用外设,还是页面在“政务浏览器”里运行调用外设,接口完全一样,web 应用不用做任何修改。


< script src="/resources/zwexplorer-jssdk.js">< /script> < script> //如果在政务浏览器内打开应用系统,不必设置host和port。 let data = { host: 'localhost', port: 56289 //如果政务浏览器的Api Http Server的端口改变了,要设置该port } zwexplorer.__init(data, (res) => { if (res.resultCode != 0) { alert(res.resultMessage); } })< /script>
复制代码


3、在 webapp 中读取身份证以身份证读取为例,政务浏览器是以插件形式增加各功能,所以要调用该功能,先通过浏览器的“扩展插件”管理界面安装该插件,如下图。Windows 下所有插件免费,信创环境下每个政务工具插件 License99 元



每个插件有自己固定的 appName,身份证插件的 appName 是“IDCardReader”。调用身份证读卡器的代码如下。

function readIdCard() {
let requestBody = { timeout: 30 //表示30秒超时 } zwexplorer.IDCardReader.readIdCardCyclically(requestBody, (resp) => { if (resp.resultCode == 0) { $("#idcardResult").val(JSON.stringify(resp.data)); } else { $("#idcardResult").val(resp.resultMessage); } })}
复制代码


更多调用说明见“身份证插件调用demo

4、注意事项通过 http 调用外设,涉及到“跨域”问题。Chrome 浏览器和 Edge 浏览器均对跨域请求有严格限制,要求业务系统采用 ssl 协议(即 https)才允许调用发布在 localhost:52689 的 API 。 如果应用无法没有安装 ssl 证书,请用“政务浏览器”访问应用,不要采用第三方浏览器。

更多 demo 见“政务浏览器Demo V1.0"

发布于: 刚刚阅读数: 8
用户头像

非也

关注

还未添加个人签名 2024-01-25 加入

还未添加个人简介

评论

发布
暂无评论
用Chrome,Edge,360等浏览器如何调用底层硬件模块?_chrome_非也_InfoQ写作社区