Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript键事件的问题_Javascript_Events - Fatal编程技术网

javascript键事件的问题

javascript键事件的问题,javascript,events,Javascript,Events,我想对用户点击回车键做出响应,我可以这样做,但是我不想对用户点击回车键并且焦点在地址栏上的事件做出响应。当焦点位于地址栏时,我不知道如何阻止我的键事件处理程序执行 注意:页面刷新,但首先调用我的处理程序 请不要告诉我当焦点位于地址栏时不要执行此操作,我知道,请告诉我如何检查焦点是否位于地址栏,谢谢 好的,我知道了,是keyup事件,而不是keydown,导致了这一点,感谢您的帮助如果用户的注意力集中在地址栏上,并且用户点击了Enter键,您将无法阻止它,您的事件处理程序甚至不应该运行(尽管页面将

我想对用户点击回车键做出响应,我可以这样做,但是我不想对用户点击回车键并且焦点在地址栏上的事件做出响应。当焦点位于地址栏时,我不知道如何阻止我的键事件处理程序执行

注意:页面刷新,但首先调用我的处理程序

请不要告诉我当焦点位于地址栏时不要执行此操作,我知道,请告诉我如何检查焦点是否位于地址栏,谢谢


好的,我知道了,是keyup事件,而不是keydown,导致了这一点,感谢您的帮助

如果用户的注意力集中在地址栏上,并且用户点击了Enter键,您将无法阻止它,您的事件处理程序甚至不应该运行(尽管页面将重新加载)

Event.observe(document, 'keypress', function(event){
   if event.keycode == Event.KEY_RETURN { 
       //DO STUFF
   }
});

因此,只有在原型中观察文档中发生的按键操作,才能将KeyListener附加到文档中

Event.observe(document, 'keypress', function(event){
   if event.keycode == Event.KEY_RETURN { 
       //DO STUFF
   }
});

因此,仅关注文档中发生的按键操作无法阻止事件处理程序触发。你可以做的是检查焦点在哪里,并且只在你想要的时候发射,例如焦点在地址栏上时不发射

无法阻止事件处理程序触发。你可以做的是检查焦点在哪里,并且只在你想要的时候发射,例如焦点在地址栏上时不发射

在Firefox和Chrome上(目前我只需要测试这两种浏览器),当键盘焦点位于位置栏并按下Enter键时,不会触发keydown或keypress事件。当页面再次加载时,keyup事件触发,因为我没有足够快地释放它

Event.observe(document, 'keypress', function(event){
   if event.keycode == Event.KEY_RETURN { 
       //DO STUFF
   }
});
因此,我想你可以坚持使用keydown和/或keypress事件,或者跟踪keydown事件,忽略任何不在keydown之前的keydup事件。

在Firefox和Chrome上(目前我只需要测试两个),当键盘焦点位于位置栏上且按下Enter键时,不会触发keydown或keypress事件。当页面再次加载时,keyup事件触发,因为我没有足够快地释放它


因此,我认为您可以坚持使用keydown和/或keypress事件,或者跟踪keydown事件并忽略任何未在keydown之前出现的keydup事件。

如果使用“地址栏”,您指的是浏览器的地址栏,按enter键基本上会刷新页面。@ichiban基本上是正确的,但它不会刷新-它“重新导航”到同一页。“刷新”是一种不同的操作。如果通过“地址栏”,您指的是浏览器的地址栏,则按enter键基本上会刷新页面。@ichiban大多数为true,但不会刷新-它会“重新导航”到同一页面。“刷新”是一种不同的操作。