该方法在
shift+enter
等组合键时需特殊处理
三、使用event.repeat
document.addEventListener('keydown',function(e){
if(e.repeat){
return ;
//doSomething...
该方法会有兼容性的问题,参考:http://help.dottoro.com/ljbupnfj.php,https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat
1. 原因
许多入前端不久的人都会遇到 removeEventListener 无法清除监听的情况,这是由于
要移除事件句柄,addEventListener() 的执行函数必须使用外部函数,如上实例所示 (myFunction)。
匿名函数,类似 “document.removeEventListener(“event”, function(){ myScript });” 该事件是无法移除的。
而在很多情况下我们需要句柄回调的传参,又需要其他传参时免不了使用句柄,这个时候我们需要写一个方法去替代这个回调,以下是解决方式,写了一个addListener 函数在 addEventListene
var keydown = require ( 'keydown' )
var kd = keydown ( [ '<control>' , 'a' ] )
kd . on ( 'pressed' , function ( ) {
// control + a are both pressed right now
keydown:当用户按下键盘上的任意键时触发,按住不动将重复触发,event.keyCode获得键码
keyup:当用户释放键盘上的键时触发,event.keyCode获得键码
keypress:当用户按下键盘上的字符键时触发,按住不动将重复触发,event.charCode获得键码
关于keydown与keypress:建议使用keydown
<script>
// 键盘事件
// e.keyCode 键码值 判断按键的标准
window
之前在写坦克大战时就遇到一个问题,在移动坦克的同时还要发射炮弹。这个时候如果使用onkeydow事件的话,就会在发射炮弹时停止移动,没法同时触发两个keydown事件,为了解决这个问题,我通过在声明多个对象来记录按键的状态。
以移动为例子,假如要通过方向来移动某个在浏览器上的元素,首先给这个元素浮动(在使用canvas画布之类的可以使用里面的API改变元素的位置,这里通过将元素浮动来举例子)
onkeydown 按键被按下
对于某个按键一直按着不放,则事件会一直触发
当onkeydown连续触发式,第一次和第二次之间会有一个间隔时间,其他之后会非常的快
这种设计是为了防止我们误操作
onkeyup 按键被松开
键盘事件一般都会绑定给一些可以获取到焦点的对象,或者是document
可以通过keyCode来获取按键的编码
通过它可以判断那个按键被按下
除了keyCo...