Вы можете попробовать использовать Event.isTrusted , который указывает, было ли событие создано путем взаимодействия с пользователем (true
) или с помощью чего-то вроде JavaScript манипуляции (false
):
var caller = "by the client";
document.getElementById('mySlider').oninput = function(event) {
if (event.isTrusted) {
/* The event is trusted, generated by a user action */
} else {
/* The event is not trusted, generated or modified by a script or dispatched via EventTarget.dispatchEvent() */
}
}
var inputEl = document.getElementById('foo');
inputEl.onchange = function (event) {
console.log(event.isTrusted);
}
document.getElementById('bar').onclick = function() {
inputEl.value = Math.floor(Math.random() * 100);
inputEl.dispatchEvent(new Event('change'));
}
<input type="range" id="foo" name="foo" />
<button type="button" id="bar">change value</button>
Надеюсь, это поможет!