#javascript #html
Вопрос:
У меня есть элемент слайдера в моем приложении data viz, в котором я хочу запустить событие с завершением перетаскивания слайдера. Это решение использует change
событие и отлично работает в Chrome.
this.slider.addEventListener('change', e => {
// do something when slider changes
})
Однако FireFox и Safari поддерживают только это input
событие, поэтому описанный выше подход не сработает. Как лучше всего обойти проблему имитации change
событий в FireFox и Safari.
Вот весь соответствующий код JS
const slider = document.createElement('input')
slider.type = 'range'
slider.min = 10
slider.max = 20
document.body.appendChild(slider)
slider.addEventListener('change', e => {
// do something when slider changes
console.log("change");
})
Комментарии:
1. Согласно MDN,
change
событие поддерживается в Firefox 1.0 и Safar 3.0 и выше.2. Нет. Слайдер полностью не работает в последней версии FireFox и Safari.
3. Можете ли вы опубликовать HTML-код?
4. Firefox показывает мне событие изменения так же, как Chrome/Edge (Windows10). Не могли бы вы разместить достаточно кода, чтобы мы могли видеть, когда вы ожидаете, что произойдут изменения.
5. Пожалуйста, опубликуйте достаточное количество кода, чтобы мы могли попробовать это сами.Мои тесты показывают, что происходит событие изменения.
Ответ №1:
Ложная тревога. Решенный. Это не имеет ничего общего с элементом ввода/диапазона. У меня есть один или несколько обработчиков событий, прикрепленных к документу, которые используют события мыши, предназначенные для элемента ввода/диапазона.