Браузер EDGE - настраиваемое значение ввода type = "range" не изменяется при первом нажатии на дорожке слайдера - PullRequest
0 голосов
/ 06 марта 2019

У меня есть настроенный диапазон ввода со ссылкой this . Он отлично работает на Chrome, IE и EDGE, однако есть одна проблема на EDGE . Первый щелчок по дорожке ползунка изменяет положение большого пальца, но не значение. Последующие клики работают нормально.

Пожалуйста, откройте эту скрипку в EDGE для наблюдения за этим поведением.

HTML: 

<input id="sel" type="range" min="5" max="100" value="50" step="5">
<h3>Slider Value: <span id="range"></span></h3>

JS:

(function () {
  var sel = document.querySelector('#sel');
  document.querySelector('#range').innerText = sel.value;
  sel.addEventListener('change', function (){
    document.querySelector('#range').innerText = sel.value;
  });
})()

CSS:

#sel {
  width:500px;
}

input[type=range] {
 -webkit-appearance: none;
 margin: 18px 0;
 width: 100%;
}
input[type=range]:focus {
 outline: none;
} 

input[type=range]::-webkit-slider-runnable-track {
 width: 100%;
 height: 8.4px;
 cursor: pointer;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
 background: #3071a9;
 border-radius: 1.3px;
 border: 0.2px solid #010101;
}
input[type=range]::-webkit-slider-thumb {
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
 border: 1px solid #000000;
 height: 30px;
 width: 30px;
 border-radius: 100%;
 background: #ffffff;
 cursor: pointer;
 -webkit-appearance: none;
}
input[type=range]:focus::-webkit-slider-runnable-track {
 background: #367ebd;
}

input[type=range]::-ms-track {
 width: 100%;
 height: 8.4px;
 cursor: pointer;
 background: transparent;
 border-color: transparent;
 border-width: 16px 0;
 color: transparent;
}
input[type=range]::-ms-fill-lower {
 background: #2a6495;
 border: 0.2px solid #010101;
 border-radius: 2.6px;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-fill-upper {
 background: #3071a9;
 border: 0.2px solid #010101;
 border-radius: 2.6px;
 box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 30px;
  width: 30px;
  border-radius: 100%;
  background: #ffffff;
  cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
  background: #3071a9;
}
input[type=range]:focus::-ms-fill-upper {
  background: #367ebd;
} 

Ценю вашу помощь.

1 Ответ

0 голосов
/ 06 марта 2019

Переключение с обработки события change на обработку input вместо этого, похоже, решает проблему:

sel.addEventListener('input', function (){
    document.querySelector('#range').innerText = sel.value;
});

https://jsfiddle.net/tz1mhys0/

Кажется, что в Chrome все еще работает нормально с этимдругие браузеры, которые я не могу в настоящее время проверить.Если вы обнаружите, что input не работает, я думаю, что добавление обработчиков для обоих событий, вероятно, также не принесет большого вреда.

...