Подтвердить что ты не робот

Отключить прокрутку клавиши со стрелкой в ​​браузере пользователей.

Я делаю игру с использованием canvas и javascript.

Когда страница больше, чем экран (комментарии и т.д.), нажатие стрелки вниз прокручивает страницу вниз и делает игру невозможной.

Что я могу сделать, чтобы предотвратить прокрутку окна, когда игрок просто хочет спуститься вниз?

Я думаю, что с Java-играми, и это, это не проблема, если пользователь нажимает на игру.

Я попробовал решение: Как отключить прокрутку страницы в FF с помощью клавиш со стрелками, но я не смог заставить его работать.

4b9b3361

Ответ 1

Резюме

Просто предотвратить действие браузера по умолчанию:

window.addEventListener("keydown", function(e) {
    // space and arrow keys
    if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
        e.preventDefault();
    }
}, false);

Оригинальный ответ

В своей игре я использовал следующую функцию:

var keys = {};
window.addEventListener("keydown",
    function(e){
        keys[e.keyCode] = true;
        switch(e.keyCode){
            case 37: case 39: case 38:  case 40: // Arrow keys
            case 32: e.preventDefault(); break; // Space
            default: break; // do not block other keys
        }
    },
false);
window.addEventListener('keyup',
    function(e){
        keys[e.keyCode] = false;
    },
false);

Магия происходит в e.preventDefault();. Это блокирует действие по умолчанию для события, в этом случае перемещая точку обзора браузера.

Если вам не нужны текущие состояния кнопок, вы можете просто отказаться от keys и просто отбросить действие по умолчанию со стрелками:

var arrow_keys_handler = function(e) {
    switch(e.keyCode){
        case 37: case 39: case 38:  case 40: // Arrow keys
        case 32: e.preventDefault(); break; // Space
        default: break; // do not block other keys
    }
};
window.addEventListener("keydown", arrow_keys_handler, false);

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

window.removeEventListener("keydown", arrow_keys_handler, false);

Ссылки