输入法切换小程序(js模拟键盘按键输入成功版)

  花了半天时间写了个小程序,基本满足最初需求(但目前只支持IE浏览器)。

需求:

  在输入汉字的时候没有切换出中文输入法而导致输入了拼音,我们要做的是:将输入的拼音删除并且切换出中文输入法,重新自动在输入法中打出相应的字母。

我的电脑上默认只有两个输入法,中文输入法和美式键盘,所以模拟出”ctrl+空格键“即可在两个输入法之间进行切换。

做的过程和想法:

  最初想的是使用网页配合js来做,毕竟界面好做一些。首先想到的就是用js来模拟键盘的输入,想法很好,但是却很难,主要是因为浏览器为了考虑安全性,所以这些功能是不允许的,因此在此处遇到了很大的麻烦,都产生了要放弃用js来做的想法。后来也想到了用模拟键盘输入,不过感觉这样做太麻烦了。后来无意间发现了两篇博文(http://blog.sina.com.cn/s/blog_99baab530101a4nn.html 和 http://weity.blog.163.com/blog/static/14302652008640479337/),虽然其中有错误,但经过借鉴并融合了两者的博文,最终算是马马虎虎的实现了所需要的功能。

用法:

  在没有切换中文输入法的情况下,双击已经输入的拼音即可。

代码不多,需要的是思想,不多说了,上代码,直接用IE浏览器就可以直接运行。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<script language="javascript" src="1.js" ></script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- TemplateBeginEditable name="doctitle" -->
<title>输入法切换程序</title>
<!-- author:hsq ; date: 2015-4-2 9:07:52  采用js+vbs脚本-->
<!--目前只支持IE-->

<style type="text/css">
	body { text-align:center; margin:auto auto; margin-top:50px; background:#FC9;}
	.id1 {background:#FFC; font-size:18px; color:#D00; width:500px; height:280px; padding:8px 8px; overflow: scroll;}
	.id2 { margin-bottom: 20px; font-size: 25px; color:#00F;}
</style>

</head>

<body>
<div class="id2">输入法切换程序</div>
<textarea id="id1" ondblclick="fun1(‘test‘)" value="" class="id1"></textarea>

</body> 
</html>
<script language="javascript">
	window.onload=function(){//网页初始化的时候选择允许ActiveX与其他进行交互
		var ws = new ActiveXObject("Wscript.Shell");
		
		}
	var id1 = document.getElementById("id1");
	id1.focus();
	
	function fun1(id){
	var ws = new ActiveXObject("Wscript.Shell");
		switch(id){
			case ‘test‘:
				try{
					//ws.SendKeys("^{ESC}s");
					str = document.selection.createRange().text;//获得选中的文字
					if(str.charCodeAt(0)>255) {}//判断若选中的是汉字则什么都不做
					else {//选中的是拼音则执行转换操作
					//alert(str);
					ws.SendKeys ("^ ");//切换输入法
					setTimeout(function(){
						ws.SendKeys(str);
						},300);//间隔0.3秒之后输入文字
					}
				} catch(e){}  
				break    
			}
		WshShell.Quit; 
	}

</script>

技术分享

只要想做并努力的去做,终会找到方法的,即使最终没做出来,也会在做的过程中收获很多。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。