学完了JavaScript之后,自己突发奇想,想写一个模拟键盘的小程序。代码如下:
程序特色:
按下按键打印对应的keyCode值,并且对应的键会变色,键升起又会恢复颜色。
按下按键语音对应的键名(采用audio标签,这是HTML5的新标签)
<code><!doctype html></code>
<code><html lang=</code><code>"en"</code><code>></code>
<code> </code><code><!--</code>
<code> </code><code>需求:通过键盘点击,结合键盘事件来模拟按下了哪个键。</code>
<code> </code><code>onkeydown</code>
<code> </code><code>onkeyup</code>
<code> </code><code>思路:</code>
<code> </code><code>1.在onload事件中创建键盘视图</code>
<code> </code><code>2.定义一个输入框来接收和触发键盘事件</code>
<code> </code><code>3.同时返回按下的那个键的keyCode值</code>
<code> </code>
<code> </code><code>--></code>
<code> </code><code><head></code>
<code> </code><code><meta charset=</code><code>"UTF-8"</code><code>></code>
<code> </code><code><meta name=</code><code>"Generator"</code> <code>content=</code><code>"EditPlus"</code><code>></code>
<code> </code><code><meta name=</code><code>"Author"</code> <code>content=</code><code>""</code><code>></code>
<code> </code><code><meta name=</code><code>"Keywords"</code> <code>content=</code><code>""</code><code>></code>
<code> </code><code><meta name=</code><code>"Description"</code> <code>content=</code><code>""</code><code>></code>
<code> </code><code><title>模拟键盘</title></code>
<code> </code><code><style type=</code><code>"text/css"</code><code>></code>
<code> </code><code>/*键盘外边框格式*/</code>
<code> </code><code>#keycontainer{</code>
<code> </code><code>border:3px solid red;</code>
<code> </code><code>padding:50px 50px;</code>
<code> </code><code>}</code>
<code> </code><code>/*每个按键的格式*/</code>
<code> </code><code>span{</code>
<code> </code><code>border:1px solid red;</code>
<code> </code><code>background:black;</code>
<code> </code><code>width:50px;</code>
<code> </code><code>color:white;</code>
<code> </code><code>font-size:1cm;</code>
<code> </code><code>display:inline-block;</code>
<code> </code><code>padding:1px;</code>
<code> </code><code>/*输入框的格式*/</code>
<code> </code><code>#input{</code>
<code> </code><code></style></code>
<code> </code><code></head></code>
<code> </code><code><body onload=</code><code>"initView();"</code><code>></code>
<code> </code><code><marquee behavior=</code><code>"alternate"</code><code>><font size=</code><code>"6"</code> <code>color=</code><code>"BlueViolet"</code> <code>><b>键盘测试程序&nbsp;&nbsp;&nbsp;作者:陈章&nbsp;&nbsp;&nbsp;黑马程序员【Android70期】</b></font></marquee> </code>
<code> </code><code><div id=</code><code>"keycontainer"</code><code>></div></code>
<code> </code><code><hr/></code>
<code> </code><code>请在下面的文本框中按下任意一个键<br/></code>
<code> </code><code><input type=</code><code>"text"</code> <code>id=</code><code>"input"</code> <code>onkeydown=</code><code>"keydown(event);"</code> <code>onkeyup=</code><code>"keyup(event);"</code><code>/></code>
<code> </code><code><!--播放音频--></code>
<code> </code><code><audio id=</code><code>"soundplayer"</code><code>>您的浏览器不支持audio元素</audio></code>
<code> </code><code></body></code>
<code> </code><code><script type=</code><code>"text/javascript"</code><code>></code>
<code> </code><code>//工具函数</code>
<code> </code><code>function</code> <code>outln(str)</code>
<code> </code><code>{</code>
<code> </code><code>document.writeln(str);</code>
<code> </code><code>}</code>
<code> </code><code>function</code> <code>out(str)</code>
<code> </code><code>document.write(str);</code>
<code> </code><code>function</code> <code>byID(id)</code>
<code> </code><code>return</code> <code>document.getElementById(id);</code>
<code> </code><code>var</code> <code>colorBefore;</code>
<code> </code><code>//获取音频播放器</code>
<code> </code><code>var</code> <code>soundplayer = byID(</code><code>"soundplayer"</code><code>);</code>
<code> </code><code>//封装播放功能</code>
<code> </code><code>function</code> <code>playsrc(src)</code>
<code> </code><code>soundplayer.src = src ;</code>
<code> </code><code>soundplayer.play();</code>
<code> </code><code>function</code> <code>byName(name)</code>
<code> </code><code>return</code> <code>document.getElementsByName(name)[0];</code>
<code> </code>
<code> </code><code>function</code> <code>keydown(e)</code>
<code> </code><code>{</code>
<code> </code><code>//遍历键盘的各个键,看哪个的值与键盘按下的值相匹配。</code>
<code> </code><code>var</code> <code>keys = document.getElementsByTagName(</code><code>"span"</code><code>);</code>
<code> </code><code>for</code><code>(</code><code>var</code> <code>i = 0; i < keys.length; i++)</code>
<code> </code><code>{</code>
<code> </code><code>var</code> <code>each = keys[i];</code>
<code> </code><code>if</code><code>(each.innerHTML == String.fromCharCode(e.keyCode))</code>
<code> </code><code>{</code>
<code> </code><code>//播放对应的音频----这个功能受浏览器兼容性影响,UC/360验证可使。</code>
<code> </code><code>playsrc(</code><code>"recordings/"</code> <code>+ String.fromCharCode(e.keyCode) +</code><code>".wav"</code><code>);</code>
<code> </code><code>colorBefore = each.style.backgroundColor;</code>
<code> </code><code>each.style.backgroundColor = </code><code>"blue"</code><code>;</code>
<code> </code><code>return</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>playsrc( </code><code>"recordings/UDK.wav"</code> <code>);</code>
<code> </code><code>}</code>
<code> </code><code>function</code> <code>keyup(e){</code>
<code> </code><code>each.style.backgroundColor = colorBefore;</code>
<code> </code><code>byID(</code><code>"input"</code><code>).value=String.fromCharCode(e.keyCode) + </code><code>" keyCode值:"</code> <code>+ e.keyCode;</code>
<code> </code><code>//如果按下的键没有的话</code>
<code> </code><code>byID(</code><code>"input"</code><code>).value= </code><code>"? keyCode值:"</code> <code>+ e.keyCode;</code>
<code> </code><code>// <!--初始化键盘视图--></code>
<code> </code><code>function</code> <code>initView()</code>
<code> </code><code>var</code> <code>main = byID(</code><code>"keycontainer"</code><code>);</code>
<code> </code><code>var</code> <code>s = </code><code>""</code><code>;</code>
<code> </code><code>s += </code><code>"<span >Q</span >&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >W</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >E</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >R</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >T</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >Y</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >U</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >I</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >O</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >P</span>&nbsp;&nbsp;<br/><br/>"</code><code>;</code>
<code> </code><code>s += </code><code>"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span >A</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >S</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >D</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >F</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >G</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >H</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >J</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >K</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >L</span>&nbsp;&nbsp;<br/><br/>"</code><code>;</code>
<code> </code><code>s += </code><code>"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span >Z</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >X</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >C</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >V</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >B</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >N</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>s += </code><code>"<span >M</span>&nbsp;&nbsp;"</code><code>;</code>
<code> </code><code>main.innerHTML = s;</code>
<code> </code><code>} </code>
<code> </code>
<code> </code><code></script></code>
<code></html></code>
程序在桔子浏览器中运行之后效果如下:
<a href="http://s3.51cto.com/wyfs02/M02/6E/F8/wKioL1WNchnzQtumAAQs_rMWFJE806.jpg" target="_blank"></a>
当按下A-Z字母时,会显示字母和对应的keyCode值;其它的键会显示?和keyCode值。
本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1666096,如需转载请自行联系原作者