我如何获得多个独立的文档.Onkeydown事件工作
How do i get multiple independant document.onkeydown events to work?
我正在我的个人网站工作,我已经建立了一些复活节彩蛋热键。在每个页面上,按下"m"键将隐藏菜单,按下"g"键将在当前页面上方启动游戏。在另一个页面上,我让"t"answers"l"键执行其他CSS更改。在每个页面上,游戏和菜单键都按预期运行,除了带有监听器"t"answers"l"的页面。显然存在某种冲突,使它们无法在每个页面上工作。我相信这是因为我在三个不同的文件中声明了侦听器。我想保持这种方式,使我的网站更加模块化(即我可以很容易地将游戏的js文件传输到任何其他网站)。什么好主意吗?
第一个听众,"m"键: (nav-script.js)
document.addEventListener('keydown', function(evt){
var evt = evt || window.event;
if(evt.keyCode == 77){
showNav();
}
},false);
第二个听众,"g"键: (clickgame.js)
document.onkeydown = enable;
function enable(event){
// Enables/disables the game
var event = event || window.event;
if(event.keyCode == 71 && !enabled){ // 71 is the code for the 'G' key
game = true;
enabled = true;
setup();
}else if(event.keyCode == 71){
game = false;
enabled = false;
quitgame();
}
}
第三侦听器,"l"answers"t"键: (project-focus.js)
document.onkeydown = focusFeatures;
function focusFeatures(event){
var event = event || window.event;
if(event.keyCode == 76){
lightswitch();
}else if(event.keyCode == 84){
textswitch();
}
}
document.onkeydown =
赋值覆盖所有先前赋值的处理程序。您需要使用addListener
来有效地为同一事件附加多个处理程序。
或者,您可以使用jQuery,因为这会使事情变得更容易。
当你这样做的时候:
document.onkeydown = focusFeatures;
您正在用focusFeatures
替换所有其他onkeydown
侦听器。
对于document.onkeydown = enable
也是一样。
你应该这样做:
document.addEventListener('keydown', enable, false); // for the games
document.addEventListener('keydown', focusFeatures, false); // for the focus features
对于,您应该首先声明函数,然后将其分配给侦听器。
我在理解每个JS文件加载在页面上是正确的吗?如果是这样,那么要加载的最后一个文件将覆盖前一个文档。onkeydown处理器。
每个文档只能有一个文档。Onkeydown处理程序,所以你必须做一些聪明的事件调度,以确保它们被传播到需要它的每段代码。jQuery和Google Closure等常用库将为您处理此问题。下面是一个jQuery的例子:
$(document).keydown(function(e) {
if (e.keyCode == 76) {
window.console.log("pressed l!");
}
});
$(document).keydown(function(e) {
if (e.keyCode == 71) {
window.console.log("pressed g!");
}
});
和一个链接到它的实际工作:http://jsfiddle.net/v7v4L/
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 我如何获得多个独立的文档.Onkeydown事件工作
- 文档.Onkeydown在firefox中不起作用