Отображение клавиш со стрелками для функции прокрутки?

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

Здесь важно отметить, что страница не прокручивается при использовании колеса прокрутки, она только активирует анимацию следующего слайда. Веб-страница никогда не ругается в традиционном смысле...

Однако некоторые люди не используют колесо прокрутки, они используют стрелки клавиатуры.

Есть ли способ, в идеале с помощью JavaScript, заставить клавиши со стрелками эмулировать прокрутку колесика мыши?

Я прошу прощения за отсутствие кода или предыдущие усилия - я не смог ничего найти в отношении этой проблемы, и код хорошо встроен в расширение Slideshow. Я надеюсь добавить свой собственный JS в дополнение к базовому слайд-шоу.

3 ответа

Вы можете попытаться вызвать событие mousewheel для элемента галереи кодом, используя что-то вроде этого:

var element = <reference to the element the mousewheel events are bound to>

document.addEventListener('keydown', function(e){
    var event = new Event('MouseEvents');
    event.initEvent('mousewheel', true, true);

    switch(e.keyCode){
        case '37':
            event.wheelDelta = -1;
            element.dispatchEvent(event);
            break;
        case '39':
            event.wheelDelta = 1;
            element.dispatchEvent(event);
            break;
    }
});

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

Вы можете попробовать что-то вроде этого. Это не фактическое решение, а подход.

$('#someContainer').scroll(function(){
       $( "#target" ).keydown();
    })

Вы могли бы сделать что-то вроде этого:

yourElement.addEventListener('onkeydown', function(e) {
    var key = e.which || e.keyCode;
    if (key === 37) { // arrow left
        // Your code here
    } else if (key === 39) { // arrow right
        // Your code here
    }
});
Другие вопросы по тегам