HTML препятствует пробелу на странице прокрутки
Я использую код:
window.onkeydown = function(e) {
return !(e.keyCode == 32);
};
который делает именно то, что я хочу, останавливает прокрутку страницы при нажатии пробела. Однако он также запрещает пользователю вводить пробелы в текстовое поле
Есть ли способ предотвратить прокрутку пробела, а также сохранить функциональность пробела во время ввода?
Ответы
Ответ 1
Попробуйте проверить, является ли target
тело:
window.addEventListener('keydown', function(e) {
if(e.keyCode == 32 && e.target == document.body) {
e.preventDefault();
}
});
body { height: 100000px; }
<input />
<textarea></textarea>
Ответ 2
Вы можете посмотреть e.target
, и если это тело, вы возвращаете false
.
window.onkeydown = function(e) {
return !(e.keyCode == 32 && e.target == document.body);
};
Ответ 3
window.onkeydown = function(e) {
e = e || window.event; //normalize the evebnt for IE
var target = e.srcElement || e.target; //Get the element that event was triggered on
var tagName = target.tagName; //get the tag name of the element [could also just compare elements]
return !(tagName==="BODY" && e.keyCode == 32); //see if it was body and space
};
Ответ 4
Вы можете проверить цель события и только запустить свой код, если он не является элементом типа. Например:
window.onkeydown = function(e) {
var elem = e.target.nodename;
if( elem !== 'TEXTAREA' && elem != 'INPUT' ) {
return !(e.keyCode == 32);
}
};