Clearinterval при щелчке мышью или при наведении курсора

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

Вот

var interval = setInterval(function() {

document.querySelector('.fp-controlArrow.fp-next').click();


}, 7000);

setTimeout(function( ) { clearInterval( interval ); }, 44000);

Но теперь я бы хотел очистить Interval всякий раз, когда пользователь нажимает кнопку того же класса (.fp-controlArrow.fp-next) . Может ли JS как-то различать разницу между симулированным кликом и реальным кликом мыши? Если так, какой код для этого?

А если нет, то возможно ли очистить интервал при наведении на кнопку с классом.fp-controlArrow.fp-next?

Спасибо!

2 ответа

Ты можешь использовать mousedown событие для реального клика.

var el = document.querySelector('.fp-controlArrow.fp-next')
el.addEventListener('mousedown', function(){
    clearInterval( interval );
});

Рабочий пример: https://jsfiddle.net/fov47eny/

Также вы можете использовать isTrusted но он имеет ограниченную поддержку в браузерах.

if (e.isTrusted) {
    /* The event is trusted. */
} else {
    /* The event is not trusted. */
}

Да, вы можете различить сгенерированное пользователем событие от события сгенерированного кода, используя свойство isTrusted объекта события в прослушивателе событий.

var elem = document.querySelector('.fp-controlArrow.fp-next');

elem.addEventListener("click", function( event ) {   
    if(event.isTrusted)
        clearInterval(interval);

  }, false);

https://developer.mozilla.org/en/docs/Web/API/Event/isTrusted

Другие вопросы по тегам