Mac/Windows 在 Javascript 中弹出虚拟键盘

2024-03-20

我正在开发一个专为在大型触摸屏显示器上使用而设计的网络应用程序。它不是一个移动应用程序;它将在 Mac OS X 和 Windows 上的 FireFox 和 Chrome 中运行。我正在寻找一种方法,以编程方式从 javascript 弹出操作系统的本机屏幕键盘。在 Win 7 中,当用户聚焦于文本区域时(就像 iOS 和 Android 一样),这种情况会自动发生,但对于旧版本的 Windows 和 OS X,用户必须手动将其拉出,这很麻烦我想排除。

理想情况下,它会像 Win7/iOS/Android 一样工作,并且当用户聚焦于文本区域时自动弹出,但我会满足于弹出键盘的任何 javascript,即使我必须为每个文本框添加它。

如果这可能的话,我确信 Mac 与 Windows 是不同的,所以我想这实际上是两个问题合而为一。任何帮助表示赞赏。


好的,我已经在我自己的 Mac(版本 10.6.8)和 Windows XP 上进行了本地测试,所以好消息是它可以工作(而且非常简单)。

其基本思想是:

  1. 了解如何从命令行打开屏幕键盘
  2. 设置浏览器以允许从 JavaScript 执行命令行
  3. 编写您的 HTML :-)

两个平台的说明如下。

Mac

对于 Mac,下载并构建此 Xcode 项目:

  • https://github.com/nriley/keyboardViewer https://github.com/nriley/keyboardViewer

确保您的构建目标与客户端 Mac 相同(例如 64 位 Intel 等)。输出将是一个名为的可执行文件keyboardViewer。执行时将弹出屏幕键盘。

假设您已保存keyboadViewer到用户的桌面上,那么您要执行的命令是(如我的情况):

  • /Users/Oliver/Desktop/keyboardViewer.

Windows

在 Windows 上,从命令行打开屏幕键盘要容易得多。以下(或类似)可以做到这一点:

  • C:\WINDOWS\system32\osk.exe

Firefox

接下来,您必须从浏览器执行此文件(或 Windows 命令)。因此,请在此处安装 Firefox 插件:

  • https://addons.mozilla.org/en-US/firefox/addon/commandrun/ https://addons.mozilla.org/en-US/firefox/addon/commandrun/

该插件将允许您从 JavaScript 执行操作系统命令(例如执行文件)。在从附加组件执行此命令之前,您需要将此命令添加到允许的命令列表中。

要执行此操作,请转至about:config在浏览器地址栏中。右键单击首选项列表并选择新建 > 字符串。您要添加的新首选项的名称是extensions.commandrun.allowedcommands。对于该值,请输入以下内容:

  • On Mac: ["/Users/Oliver/Desktop/keyboardViewer"]
  • 在 Windows 上:["C:\\WINDOWS\\system32\\osk.exe"]

HTML

现在,您将能够使用 HTML 从 Firefox 打开屏幕键盘,如下所示:

<script language="javascript">
function openKeyboard(){
    CommandRun.run("/Users/Oliver/Desktop/keyboardViewer", []);
}
</script>

<input type="text" onfocus="javascript:openKeyboard();" />

在 Windows 上,替换以下内容:

CommandRun.run("C:\\WINDOWS\\system32\\osk.exe", []);

选择

另一种方法是使用 Adob​​e Air 等工具编写您自己的浏览器。使用该方法,您的 JavaScript 调用您的 Air 应用程序,然后您的 Air 应用程序执行keyboardViewer(或 Windows 等效项)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac/Windows 在 Javascript 中弹出虚拟键盘 的相关文章

  • ln: /usr/lib/libssl.dylib: OSX 不允许操作

    我正在尝试创建一个到 usr lib 的符号链接 但我似乎没有权限 包含在 root 中 系统返回不允许该操作 在 Yosemite 上我工作得很好 但在 El Capitan 上却坏了 有人知道我能做什么吗 我在使用 Sublime te
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • Angular UI-Router:多个 URL 到单一状态

    我已经开始使用 Angular 的 ui router 并且我正在尝试弄清楚如何让多个 URL 引用单个状态 例如 orgs 12354 overview retyrns the same pages as org overview 我的
  • 如何将本地文本文件上传到文本区域(网页内)

    我是一名新手程序员 需要一些帮助来弄清楚如何将本地文本文件上传到我正在构建的网站内的文本区域 我非常精通 HTML CSS 对 Javascript JQuery 有相当的了解 而且我刚刚学习 PHP 您能提供的任何帮助我将不胜感激 我有一
  • 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

    我正在尝试验证字符串以使它们成为有效的网址 我只需要保留 A Z 0 9 并使用以下命令从字符串中删除其他字符javascript or jquery 例如 贝儿餐厅 我需要将其转换为 百丽餐厅 所以字符被删除 只保留 A Z a z 0
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • MD 和 MKDIR 批处理命令有什么区别?

    这两个命令都会创建文件夹 我read http www computerhope com mdhlp htmMKDIR 甚至可以创建子文件夹 这只是区别吗 为什么有两个命令做同样的事情 我应该使用哪一个 除了 npocmaka 的answe
  • 为什么某些安装程序需要在运行程序之前重新启动计算机?

    我对部署桌面应用程序相当陌生 所以这是我第一次为我的软件构建安装程序 目前 我安装软件后第一次运行它时 它崩溃了 之后 它运行良好 我仍在调试此问题 但我注意到在安装后和运行软件之前立即重新启动似乎可以修复此崩溃 某些安装程序要求您在运行软
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • 如何使用 Javascript 在 html 文件中搜索字符串?

    我有 5 个 html 文件 并且有一个搜索表单 我想用它来搜索这些 html 文件中的文本
  • 为什么我的 D3 SVG 图上的轴不会更新?

    I have 简单的 D3 散点图 http www raxacoricofallapatorius com test scattertest html我在显示数据的几个不同属性之间切换 但是虽然我可以更改数据点 并按照我想要的方式进行转换
  • 此版本的 CLI 仅与 Angular 版本 5.0.0 或更高版本兼容错误

    我已经有 Angular 项目在 4 版本中运行 在安装新项目时 不幸的是我安装了 6 版本的 Angular cli 在以 4 版本运行的旧项目中运行 ngserve 命令时 这会引发错误 您的全局 Angular CLI 版本大于本地版
  • 从请求url获取hash参数

    我有这样的网址 http www coolsite com daily plan id 1 http www coolsite com daily plan id 1解析该字符串并读取哈希值 id 之后的值 的最简单方法是什么 谢谢 在客户
  • 如何使用 fetch() 和 WhatWG 流获取文件上传进度

    注意 我并不是在寻找任何替代方案 我知道这可以通过 XMLHttpRequest 来完成 我也不关心浏览器支持 我只想了解新的 即将推出的标准 我有一个File https developer mozilla org en US docs
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • highchart堆积柱每个类别的总数据

    我想获取每个类别的总数据 这point stackTotal只给出活动数据的总数 从我粘贴的代码示例中 我想知道每种水果的总消耗量 因此 即使我单击右上角图例上的乔的名字 这使得堆叠图表上的所有乔信息都处于非活动状态 我仍然可以知道约翰 简
  • 将键码转换为相关的显示字符

    在 C Windows Forms 项目中 我有一个不提供 KeyPressed 事件的控件 它是一个 COM 控件 ESRI 映射 它仅提供 KeyUp 和 KeyDown 事件 包含关键事件参数 http msdn microsoft

随机推荐