JavaScript调用屏幕键盘控件表面上看起来有点复杂,仔细阅读完本文后一切都会变得轻轻松松。在运行下面的演示程序前请先正确安装屏幕键盘控件,安装方法详见:屏幕键盘控件安装指南。
一、屏幕键盘控件演示(IE页面)

二、演示页面下载
本地下载:屏幕键盘控件演示程序(HTML版)
三、演示IE页面源代码
<html>
<!-- 版权所有 © 2018-2019 德常信息科技(上海)有限公司 -->
<!-- 更多支持的输入法名称见官网:https://taosung.tech/index.php/2019/05/16/imelist/ -->
<head>
<script language="JScript">
var lastFocusElement = null;
function InitImm()
{
document.getElementById('OneLine').focus();
document.getElementById('MsWubi').click();
}
function ChangeImm()
{
if (document.getElementById('MsWubi').checked) {
TouchKB.ImeName = "微软五笔";
}
else if (document.getElementById('MsPinyin').checked) {
TouchKB.ImeName = "微软拼音";
}
else if (document.getElementById('SogouWubi').checked) {
TouchKB.ImeName = "搜狗五笔";
}
else if (document.getElementById('SogouPinyin').checked) {
TouchKB.ImeName = "搜狗拼音";
}
else if (document.getElementById('SogouHandInput').checked) {
TouchKB.ImeName = "搜狗手写";
}
else if (document.getElementById('SogouSpeechInput').checked) {
TouchKB.ImeName = "搜狗语音";
}
else if (document.getElementById('QqWubi').checked) {
TouchKB.ImeName = "QQ五笔";
}
else if (document.getElementById('QqPinyin').checked) {
TouchKB.ImeName = "QQ拼音";
}
else if (document.getElementById('WangmaWubi').checked) {
TouchKB.ImeName = "王码五笔型";
}
else if (document.getElementById('JipinWubi').checked) {
TouchKB.ImeName = "极品输入法";
}
else if (document.getElementById('JidianWubi').checked) {
TouchKB.ImeName = "极点五笔";
}
else if (document.getElementById('XunfeiPinyin').checked) {
TouchKB.ImeName = "讯飞输入法";
}
else if (document.getElementById('BaiduWubi').checked) {
TouchKB.ImeName = "百度五笔";
}
else if (document.getElementById('BaiduPinyin').checked) {
TouchKB.ImeName = "百度输入法";
}
else if (document.getElementById('BaiduHandInput').checked) {
TouchKB.ImeName = "百度手写";
}
else if (document.getElementById('BaiduSpeechInput').checked) {
TouchKB.ImeName = "百度语音";
}
else if (document.getElementById('GooglePinyin').checked) {
TouchKB.ImeName = "谷歌拼音";
}
else if (document.getElementById('SmartPinyin').checked) {
TouchKB.ImeName = "智能ABC";
}
else
{
TouchKB.ImeName = "美式键盘";
}
if (lastFocusElement != null)
{
lastFocusElement.focus();
}
}
function SaveFocus(Element)
{
lastFocusElement = Element;
}
</script>
</head>
<body onload="InitImm()">
<br><br>
<div id=TouchKeyboard>
<table border="1">
<tr>
<td align=center>单行输入</td>
<td><INPUT TYPE="text" id="OneLine" onBlur="SaveFocus(this)" style="width:100%"></td>
</tr>
<tr>
<td align=center>多行输入</td>
<td><textarea id="MultiLine" onBlur="SaveFocus(this)" style="width:100%" rows="10" spellcheck="false"></textarea></td>
</tr>
<tr>
<td align=center>输入法</td>
<td>
<input type="radio" name="IMM" id="English" onclick="ChangeImm()" />英语
<input type="radio" name="IMM" id="MsWubi" onclick="ChangeImm()" />微软五笔
<input type="radio" name="IMM" id="MsPinyin" onclick="ChangeImm()" />微软拼音
<input type="radio" name="IMM" id="SogouWubi" onclick="ChangeImm()" />搜狗五笔
<input type="radio" name="IMM" id="SogouPinyin" onclick="ChangeImm()" />搜狗拼音
<input type="radio" name="IMM" id="SogouHandInput" onclick="ChangeImm()" />搜狗手写
<input type="radio" name="IMM" id="SogouSpeechInput" onclick="ChangeImm()" />搜狗语音
<input type="radio" name="IMM" id="QqWubi" onclick="ChangeImm()" />QQ五笔
<input type="radio" name="IMM" id="QqPinyin" onclick="ChangeImm()" />QQ拼音
<input type="radio" name="IMM" id="WangmaWubi" onclick="ChangeImm()" />王码五笔
<input type="radio" name="IMM" id="JipinWubi" onclick="ChangeImm()" />极品五笔
<input type="radio" name="IMM" id="JidianWubi" onclick="ChangeImm()" />极点五笔<br>
<input type="radio" name="IMM" id="XunfeiPinyin" onclick="ChangeImm()" />讯飞拼音
<input type="radio" name="IMM" id="BaiduWubi" onclick="ChangeImm()" />百度五笔
<input type="radio" name="IMM" id="BaiduPinyin" onclick="ChangeImm()" />百度拼音
<input type="radio" name="IMM" id="BaiduHandInput" onclick="ChangeImm()" />百度手写
<input type="radio" name="IMM" id="BaiduSpeechInput" onclick="ChangeImm()" />百度语音
<input type="radio" name="IMM" id="GooglePinyin" onclick="ChangeImm()" />谷歌拼音
<input type="radio" name="IMM" id="SmartPinyin" onclick="ChangeImm()" />智能ABC
</td>
</tr>
<tr align="center">
<td align=center>屏幕键盘</td>
<td align=center>
<OBJECT
ID="TouchKB"
WIDTH=1024
HEIGHT=275
TYPE="application/x-oleobject"
CLASSID="CLSID:8C358811-5C86-444A-9F51-0E4A782B1A9D"
CODEBASE="https://taosung.tech/TouchKeyboard/TouchKB.cab#version=1,0,0,0">
</OBJECT>
</td>
</tr>
</table>
</div>
</body>
</html>
四、核心源代码详解
1、页面加载时先执行InitImm函数激活输入框焦点,然后再设置默认输入法;演示代码默认输入法是“微软五笔”,可以根据业务需要自由设定其它名称,输入法名称完整列表见:屏幕键盘控件输入法支持。
function InitImm()
{
document.getElementById('OneLine').focus();
document.getElementById('MsWubi').click();
}
2、切换输入法时先保留当前焦点对象,利用onBlur事件的回调函数SaveFocus;
<tr>
<td align=center>单行输入</td>
<td><INPUT TYPE="text" id="OneLine" onBlur="SaveFocus(this)" style="width:100%"></td>
</tr>
<tr>
<td align=center>多行输入</td>
<td><textarea id="MultiLine" onBlur="SaveFocus(this)" style="width:100%" rows="10" spellcheck="false"></textarea></td>
</tr>
<script language="JScript">
var lastFocusElement = null;
function SaveFocus(Element)
{
lastFocusElement = Element;
}
</script>
3、执行切换输入法函数ChangeImm的最后必须恢复焦点对象,好处是用户实际使用屏幕键盘时不需要手动重复激活输入对象,一点小改变大大提高用户体验;
<script language="JScript">
var lastFocusElement = null;
// ...
// ...
// ...
function ChangeImm()
{
// ...
// ...
// ...
if (lastFocusElement != null)
{
lastFocusElement.focus();
}
}
</script>
五、技术支持
除了在官网推送技术类博文外,我们欢迎您来电子邮件获得业务或技术支持,如果您有什么好的建议也请给我们来邮件,谢谢。

