как узнать, выполнено ли изменение ползунка диапазона клиентом или изменив его значение на javascript? - PullRequest
0 голосов
/ 28 мая 2020

Есть ли способ узнать, выполнено ли изменение ползунка диапазона клиентом или изменив его значение с помощью javascript?

var caller = "by the client";

document.getElementById('mySlider').oninput = function() {
console.log("Changed "+caller+" to "+this.value);
}
<input id="mySlider" type="range" value="50" min="0" max="100">

1 Ответ

1 голос
/ 28 мая 2020

Вы можете попробовать использовать 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>

Надеюсь, это поможет!

...