如何在Genexus普通web面板中通过网页调用条码扫描器并获取返回结果
GeneXus Web面板触发条码扫描的可行方案
原生Scanner对象确实仅支持智能设备(Android/iOS)面板调用,普通Web面板可通过以下两种方案实现扫码需求:
- 方案1:集成第三方前端扫码库(适配所有GeneXus版本)
- 在Web面板添加自定义按钮,点击事件绑定自定义JS触发方法
- 引入前端条码解析库(如zxing-js)到Web面板资源中
- 点击按钮时调用HTML5
navigator.mediaDevices.getUserMedia()接口唤起设备摄像头,实时解析视频流中的条码内容 - 解析完成后将结果回写到GeneXus业务变量即可,参考代码示例:
async function triggerScan() { const codeReader = new ZXing.BrowserMultiFormatReader(); try { // 调用摄像头扫码,返回结果 const scanResult = await codeReader.decodeOnceFromVideoDevice(undefined, "video-dom-id"); // 将扫描结果赋值给GeneXus变量 gx.context.setValue("ReceiveScanResultVar", scanResult.text); codeReader.reset(); } catch (error) { console.log("扫描终止或失败:", error); } } - 方案2:使用高版本GeneXus自带Web扫码控件
如果你使用的是GeneXus 17 Update 10及以上版本,可直接使用官方提供的Web Barcode用户控件:- 把控件拖拽到Web面板指定位置,绑定接收扫描结果的变量
- 给按钮的点击事件配置调用该控件的
StartScan()方法 - 扫码完成后控件会自动将识别到的条码内容写入绑定的变量
注意:以上两种方案都要求Web应用部署在HTTPS环境下(localhost本地开发场景除外),否则浏览器会出于安全限制禁止调用摄像头权限。
内容的提问来源于stack exchange,提问作者Nicola
相关产品推荐
相关产品推荐

