JS-键盘事件-监听/取消监听
JS - keyboard events - listen / unlisten
我有一个关于JS中键盘事件的问题。
首先,请不要回答我使用jQuery方法,我知道大部分方法(绑定/取消绑定、打开/关闭、一个…(,但我使用的内部框架必须在没有jQuery的情况下工作,即使我们的大多数项目都使用jQuery。
因此,我有一个模块,实际上是一个基于swipe.js的滑动工具,并扩展到网络和移动环境(IE 7+、WebKit(Chrome和Safari(、Moz、Opera和IE10/Windows Phone所需的兼容性(
在对鼠标/触摸事件没有任何问题的情况下,受移动HTML5 BP启发的绑定和解除绑定方法似乎可以很好地工作,只需对detachEvents方法进行少量更正。
然后我将实现一个基于"keydown"事件的键盘控制功能。(顺便说一句,我不确定keydon和keypress事件之间有什么区别,除了keypressEvent.prventDefault((不能阻止小滚动效果,所以我使用keydown。(
由于可以在同一页面上添加多个Swipe,因此只有当任何Swipe都聚焦时,我才会开始侦听keydown事件(请注意,我添加了一个"tabindex"属性以允许元素聚焦(。
<div id="swipe1" class="swipe" tabindex='0'>
<ul>
[...]
</ul>
</div>
然后,当Swipe处理"touchstart"/"click"/"MSPointerDown"事件时,我关注它:
onTouchStart: function(e) {
this.container.focus(); // Refers to the div#swipe1.swipe element
[...]
return false;
}
onFocus: function (e) {
if (this.activateKeyboardControls) { // Keyboard control is optional
this.addListener(document, 'keydown', this, true);
}
}
onBlur: function (e) {
if (this.activateKeyboardControls) { // Keyboard control is optional
this.removeListener(document, 'keydown', this, true);
}
}
但不幸的是,removeListener不起作用。
我的意思是,当元素失去焦点(模糊事件触发(时,它仍然处理keydown事件。。。
是因为它绑定在文档对象上吗?我已经阅读了一些解决方案与一些布尔,但我正在寻找一种更清洁的方式来管理它。
这很烦人,因为当我把焦点放在许多Swipes上时,当我按下键盘时,每个Swipes都在滑动。
我不确定我的答案被删除的原因——在发布两周多后——但无论如何,我就是这样解决的:
它来自addEventListener/attachEvent方法的"type"参数,这是一个so…中的第一个
我把它绑定在对象上,而不是窗口上,而且没有冒泡。
var target = e.target || e.srcElement;
if (this.activateKeyboardControls) {
this.addListener(target, 'keydown', this, false);
}
- 如何在AngularJS中监听点击事件,而不是触摸事件
- BackboneJS-监听嵌套的模型更改
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 监听touchend有时会触发移动点击事件
- 使用ajax的Django jquery.如何让jquery监听id's生成的表单
- JQuery监听点击并使用点击元素发出警报's href
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- 如何让Google Maps API v3监听dragend事件并在投递时填充表单字段
- 如何在angular js中监听dom就绪事件
- Phonegap:监听页面并关闭InAppBrowser返回index.html的简单方法
- React鼠标事件在没有监听它们的组件上触发
- 监听发布到网站的广告的新网址
- 我应该使用什么模式在 Node/JavaScript 中制作监听机器人
- 如何在具体化 CSS 中监听<选择>更改事件
- 如何将誓言令牌推送到本地存储或本地会话并监听存储事件?(SoundCloud Php/JS 错误解决方法)
- 在 nsiWindowWatcher 或 nsiWindowMediator 上监听焦点/模糊?对于火狐扩展
- 有没有办法在 asp.net MVC 3 中使用 JavaScript、Jquery 监听事件
- 如何传播主干停止监听以防止内存泄漏
- 在车把周围监听渲染
- JS-键盘事件-监听/取消监听