e.preventDefault(); поведение не работает в Firefox?

У меня есть эта базовая функция для обработки ключевого события, все отлично работает. Однако в Firefox 9.0.1 кажется, что я не могу предотвратить событие по умолчанию, которое показывает закладки.

Есть ли решение для предотвращения поведения по умолчанию в FF?

$(document).keydown(function(evt) {     
    if (evt.which == 66 && evt.ctrlKey) {                             
         if (evt.preventDefault) {
             evt.preventDefault();
         } else {
             evt.returnValue = false;
         }    
         alert("Ctrl+B pressed");
         return false;                      
    }
});

person optimista    schedule 06.01.2012    source источник


Ответы (1)


Похоже на какую-то ошибку, связанную с alert. Попробуй это:

$(document).keydown(function(evt) {     
    if (evt.which == 66 && evt.ctrlKey) {                             
         if (evt.preventDefault) {
             evt.preventDefault();
         } else {
             evt.returnValue = false;
         }    
         console.log("Ctrl+B pressed");
         return false;                      
    }
});

Теперь у меня не открывается панель закладок. Я полагаю, вы на самом деле не хотите alert, не так ли? Я думаю, вы можете просто вызвать свой метод, если он не содержит alert.

person BeRecursive    schedule 06.01.2012
comment
Нет, не знаю. Теперь это работает, предупреждение, похоже, прерывает весь скрипт на стороне клиента. Это было причиной, хотя гораздо лучше использовать console.log для отладки. Спасибо! - person optimista; 06.01.2012
comment
Честно говоря, не уверен, почему alert делает это. Но console.log обычно более безопасная ставка! - person BeRecursive; 06.01.2012