Javascript 检测Firefox中打开的选择列表上的转义按钮?
我正在编写一个界面,当按下Escape时,它会触发取消按钮(如果有)。但我不想干扰标准逻辑,即如果打开Javascript 检测Firefox中打开的选择列表上的转义按钮?,javascript,firefox,Javascript,Firefox,我正在编写一个界面,当按下Escape时,它会触发取消按钮(如果有)。但我不想干扰标准逻辑,即如果打开select下拉列表,Escape将关闭该列表。如果一个select元素恰好有焦点,那么应该取消该接口 在Chrome和Opera中,当select列表打开时,按Escape键不会触发任何事件,因此默认情况下一切正常 在Safari中有一个keyup事件,但在此上下文中没有前面的keydown事件。我已经能够通过在keydown上设置一个标志来解决问题,然后我可以在keydup上检查该标志 va
select
下拉列表,Escape将关闭该列表。如果一个select
元素恰好有焦点,那么应该取消该接口
在Chrome和Opera中,当select
列表打开时,按Escape键不会触发任何事件,因此默认情况下一切正常
在Safari中有一个keyup
事件,但在此上下文中没有前面的keydown
事件。我已经能够通过在keydown
上设置一个标志来解决问题,然后我可以在keydup
上检查该标志
var _menuEscapeState = false
,_menu = document.getElementById( 'menu' );
_menu.addEventListener( 'keydown' ,function( e ) {
var e = e || window.event;
_menuEscapeState = ( e.which === 27 );
} );
_menu.addEventListener( 'keyup' ,function( e ) {
var e = e || window.event;
if( e.which === 27 && _menuEscapeState ) {
// DO STUFF
}
_menuEscapeState = false;
} );
但在Firefox中,当关闭选择列表时,键向上
和键向下
都会触发。那么,有没有办法检测列表是否已打开,以便能够过滤掉这些内容?或者是检测Firefox使用情况并在此浏览器中简单地禁用Escape以取消功能的唯一选项
顺便说一句,我没有IE测试,这就是为什么在这个时候没有提到它,虽然该网站的主要目的是在Mac上使用