2

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

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

如果这是可能的,我敢肯定 Mac 和 Windows 是不同的,所以我想这真的是两个问题合而为一。任何帮助表示赞赏。

4

1 回答 1

4

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

基本思想是:

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

两个平台的说明如下。

苹果电脑

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

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

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

  • /Users/Oliver/Desktop/keyboardViewer.

视窗

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

  • C:\WINDOWS\system32\osk.exe

火狐

接下来,您将不得不从浏览器执行此文件(或 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", []);

选择

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

于 2012-07-26T21:27:31.410 回答