JavaScript中弹出Mac/Windows虚拟键盘

3
我正在开发一个专为大型触摸屏幕设计的Web应用程序。它不是移动应用程序,将在Mac OS X和Windows上的FireFox和Chrome中运行。我正在寻找一种通过JavaScript编程来弹出操作系统本地屏幕键盘的方法。在Win 7中,当用户聚焦在文本区域时(就像iOS和Android一样),这会自动发生,但对于旧版本的Windows和OS X,用户必须手动打开它,这是我想要消除的麻烦。
理想情况下,它会像Win7/iOS/Android一样,在用户聚焦在文本区域时自动弹出,但即使我必须为每个文本框添加它,我也会接受任何弹出键盘的JavaScript。
如果这真的可能,我相信Mac与Windows的方式不同,所以我想这实际上是两个问题。感谢任何帮助。

你对客户端系统有多少控制权?例如,你的应用程序只是用HTML编写,但你对环境中的其他所有内容(包括它将在其中播放的桌面应用程序)都有控制权吗? - Oliver Moran
不确定我是否理解你的问题。这是一个Web应用程序,所以我的代码只能在客户端系统上具有正常级别的访问权限。然而,该网站将仅被预先知道的有限数量的客户机使用(主要用于大型演示/展示)。一些客户端设置已经需要与触摸屏一起使用,因此涉及客户端变更的解决方案是可接受的。 - user1555590
1个回答

5

好的,我已经在我的Mac(版本10.6.8)和Windows XP上本地测试了这个,好消息是它可以工作(而且非常容易)。

基本思路是:

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

两个平台的说明如下。

Mac

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

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

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

  • /Users/Oliver/Desktop/keyboardViewer.

Windows

在Windows上,从命令行打开屏幕键盘要容易得多。以下(或类似内容)即可完成:

  • C:\WINDOWS\system32\osk.exe

Firefox

接下来,您需要从浏览器执行此文件(或Windows命令)。因此,请在此处安装Firefox附加组件:

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

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

  • 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", []);

替代方案

一种替代方案是使用类似Adobe Air的工具编写自己的浏览器。通过这种方法,您的JavaScript调用Air应用程序,然后Air应用程序执行keyboardViewer(或Windows等效项)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接