Как предотвратить действие по умолчанию с помощью mootools

81
7

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript" src="mootools-1.2.3-core-nc.js"></script>
<script language="JavaScript" src="mootools-1.2.3.1-more-nc.js"></script>
</HEAD>
<BODY id='body'>
</BODY>
<Script>
function onkeydown(e){
alert(e.key);
e.keyCode=0;
e.stop();
return false;

}
Event.Keys.F3 = 114;
window.addEvent('domready', function() {
document.addEvent("keydown", this.onkeydown);
}) ;
</script>
</HTML>


когда он открыт в ie8, нажмите F3, действие поиска наступит. Почему вы не можете его остановить?

спросил(а) 2009-10-20T14:23:00+04:00 11 лет назад
1
Решение
59

Потому что это действие браузера по умолчанию, и почти никогда не бывает хорошего оправдания для переопределения ожидаемого поведения.

См. Как отключить Alt-Enter в IE? для недавнего обсуждения отключения ALT-Enter в IE.

ответил(а) 2009-10-20T14:26:00+04:00 11 лет назад
58

Internet Explorer и большинство других браузеров в этом случае блокируют использование ключей F из JavaScript. Перекрытие этих ключей запрещено по понятным причинам; представьте себе хаос, если мы разрешим перекручивание ключа F5!


Технический ответ заключается в том, что событие keydown и keyup перехватывается до того, как приложение достигнет уровня JS. Так же, как вы можете вернуть true или false в событии, чтобы предотвратить распространение, приложение прекращает распространение событий keydown и keyup на скриптовые интерфейсы за пределами доверенного домена, например. вы можете переопределить клавишу F3 только внутри браузера Add On и Toolbars, но не внутри веб-страниц.

Вкратце: попробуйте переустановить другой ключ, клавиши F не легко перекрестно перекрестно пересматриваются.

ответил(а) 2009-10-20T14:39:00+04:00 11 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема