使用JS调用工控机(Windows)虚拟键盘

 更新时间:2024年01月22日 09:55:15   作者:一诺滚雪球  
在工控机触摸屏中,通过浏览器web端进行表单输入,当聚焦表单输入框并不会出现虚拟键盘进行输入,本文介绍将给大家介绍如何通过js调用工控机(Windows)虚拟键盘,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

1. 需求背景

在工控机触摸屏中,通过浏览器web端进行表单输入,当聚焦表单输入框并不会出现虚拟键盘进行输入。

解决方式:

  • 使用第三方npm虚拟键盘插件引入使用
  • 使用js调用系统自带的虚拟键盘
  • 使用快捷键Win+Ctrl+O打开关闭

本文介绍下第二种方式进行操作。

2. 实现方式

在网页中通过js调用Windows上本地的exe程序,通过修改 Windows 注册表来使用 window.open 打开键盘,实际上是在设置一个自定义的 URL 协议(如 "keyboardProtocol")与键盘应用程序(通常是系统自带的屏幕键盘)相关联。当用户在网页中点击一个链接或使用 JavaScript 打开一个 "keyboardProtocol" URL 时,这将触发屏幕键盘的打开。

  • 找出虚拟键盘的可执行文件路径,如:C:\Windows\system32\osk.exe
  • 编写注册文件reg文件
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\keyboard] // 定义自定义 URL 协议的关键部分
@="keyboardProtocol"  // 自定义的 URL 协议名称
"URL Protocol"="keyboardProtocol" // 确保了系统知道这是一个自定义协议

[HKEY_CLASSES_ROOT\keyboard\DefaultIcon] // 定义了当用户在资源管理器或文件浏览器中双击与 "keyboardProtocol" 相关联的文件时显示的图标
@="C:\\windows\\system32\\osk.exe" // 屏幕键盘应用程序的路径

[HKEY_CLASSES_ROOT\keyboard\shell]  // 定义了如何与该协议交互

[HKEY_CLASSES_ROOT\keyboard\shell\open] // 定义了当用户右键点击与 "keyboardProtocol" 相关联的文件或文件夹并选择“打开”时发生的行为

[HKEY_CLASSES_ROOT\keyboard\shell\open\command] // 定义了如何执行与 "open" 操作相关联的操作
@="\"C:\\windows\\system32\\osk.exe\""
  • 双击执行
  • js中调用
// 方法一
 window.location.href="keyboard://" rel="external nofollow"  rel="external nofollow" ;
//or
window.open("keyboard://");

</script>
<!-- 方法二-->
<a href="keyboard://" rel="external nofollow"  rel="external nofollow" >打开应用程序</a>

3. 总结

该方法依赖于Windows系统自带的虚拟键盘,不适用于其他操作系统。

提供了一种通过JavaScript调用Windows系统自带的虚拟键盘的方法,解决在工控机触摸屏的web浏览器中进行表单输入时调用虚拟键盘的问题。

以上就是使用JS调用工控机(Windows)虚拟键盘的详细内容,更多关于JS调用Windows虚拟键盘的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript缓动动画函数的封装方法

    JavaScript缓动动画函数的封装方法

    这篇文章主要为大家详细介绍了JavaScript缓动动画函数的封装方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 跟我学习javascript的Date对象

    跟我学习javascript的Date对象

    跟我学习javascript的Date对象,文章主要介绍了Date 日期和时间对象的操作,文章末尾为大家附加了两个案例,帮助大家更好的学习javascript的Date对象,对这方面感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 解决使用layui的时候form表单中的select等不能渲染的问题

    解决使用layui的时候form表单中的select等不能渲染的问题

    今天小编就为大家分享一篇解决使用layui的时候form表单中的select等不能渲染的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • ECharts设置x轴刻度间隔的2种解决方法

    ECharts设置x轴刻度间隔的2种解决方法

    在初步接触Echarts时,经常遇到设置x轴刻度间隔的问题,这篇文章主要给大家介绍了关于ECharts设置x轴刻度间隔的2种解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 分享Javascript实用方法二

    分享Javascript实用方法二

    javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,本文给大家分享javascript实用方法二,感兴趣的朋友一起学习吧
    2015-12-12
  • JavaScript设计模式之单例模式实例

    JavaScript设计模式之单例模式实例

    这篇文章主要介绍了JavaScript设计模式之单例模式实例,本文用一个实际例子讲解JavaScript中的单例模式,需要的朋友可以参考下
    2014-09-09
  • 小程序实现图片裁剪上传

    小程序实现图片裁剪上传

    这篇文章主要为大家详细介绍了小程序实现图片裁剪上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 21个值得收藏的Javascript技巧

    21个值得收藏的Javascript技巧

    在本文中列出了21个值得收藏的Javascript技巧,在实际工作中,如果能适当运用,则大大提高工作效率
    2014-02-02
  • 关于页面被拦截的问题

    关于页面被拦截的问题

    先来看一下几个常用浏览器的拦截设置
    2010-02-02
  • javascript for-in有序遍历json数据并探讨各个浏览器差异

    javascript for-in有序遍历json数据并探讨各个浏览器差异

    这篇文章主要介绍了javascript for-in有序遍历json数据并探讨各个浏览器差异的相关资料,需要的朋友可以参考下
    2015-11-11

最新评论