2012-07-26 85 views
1

我正在研究專爲在大型觸摸屏顯示器上使用而設計的web應用程序。這不是一個移動應用程序;它將在Mac OS X和Windows上運行在FireFox和Chrome上。我正在尋找一種以編程方式從javascript中彈出操作系統本機屏幕鍵盤的方式。在Win 7中,當用戶將注意力集中在文本區域(如iOS和Android)時會自動發生,但對於較早版本的Windows和OS X,用戶必須手動將其拉起,這是我想要的麻煩。消除。Mac/Windows使用Javascript彈出虛擬鍵盤

理想情況下,它將像Win7/iOS/Android一樣工作,並在用戶關注文本區域時自動彈出,但我會解決任何彈出鍵盤的JavaScript問題,即使必須將其添加爲每個文本框。

如果這甚至是可能的,我敢肯定這是不同的Mac和Windows,所以我想這是真正的兩個問題之一。任何幫助表示讚賞。

+0

您對客戶端系統有多少控制?例如您的應用程序是否僅僅是用HTML編寫的,但是您控制了有關環境的其他所有內容(包括將要播放的桌面應用程序)? – 2012-07-26 19:24:55

+0

不知道我理解你的問題。這是一個web應用程序,所以我的代碼只能訪問客戶端系統的正常級別。然而,該網站將被預先知道的有限數量的客戶端機器使用(它將主要用於大型演示/演示)。某些客戶端設置已經需要與觸摸屏一起使用,因此涉及客戶端更改的解決方案是可以接受的。 – user1555590 2012-07-26 20:01:31

回答

3

好的,我已經在我自己的Mac(版本10.6.8)和Windows XP上進行了本地測試,所以好消息是它可以正常工作(而且這非常簡單)。

的基本思想是:

  1. 知道如何從命令行打開屏幕鍵盤
  2. 將瀏覽器設置爲允許命令行中從JavaScript
  3. 寫你的HTML執行:-)

這兩個平臺的說明如下。

的Mac

對於Mac,下載並構建這個Xcode項目:

確保您的構建目標是一樣的客戶端的MAC(如64位英特爾等)。輸出將是一個名爲keyboardViewer的可執行文件。這將在執行時彈出打開屏幕鍵盤。

讓我們假設你(在我的情況下)保存keyboadViewer到用戶的桌面,那麼你將要執行的命令是:

  • /Users/Oliver/Desktop/keyboardViewer

的Windows

在Windows上,這是很容易打開屏幕上的鍵盤命令行。以下(或類似)將做到這一點:

  • C:\WINDOWS\system32\osk.exe

火狐

接下來,你將不得不從瀏覽器中執行這個文件(或Windows命令)。因此,安裝Firefox插件在這裏:

此插件可以讓你執行操作系統命令(如執行文件)的JavaScript。在您可以從附加組件中執行此操作之前,您需要將此命令添加到允許的命令列表中。

爲此,請在瀏覽器地址欄中轉到about:config。右鍵單擊首選項列表並選擇New> String。您要添加的新偏好的名稱是extensions.commandrun.allowedcommands。對於值,輸入以下命令:

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

HTML現在

,你就可以打開屏幕來自Firefox的鍵盤與HTML這樣的:

<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空氣。使用該方法,您的JavaScript將調用您的Air應用程序,然後您的Air應用程序將執行keyboardViewer(或Windows等效項)。

+0

非常感謝奧利弗。這解決了這個問題。 – user1555590 2012-07-27 15:20:52