Я вижу несоответствия в сафари iOS с тем, как элементы select обрабатываются между событиями ontouchstart и onmousedown, когда выбранный индекс целевого элемента select обновляется в обработчике событий другого элемента "mouse down", но не обновляется в другом элементеобработчик события «touch start».
Поиграйте с jsbin в мобильном сафари, изменив значение элемента select без нажатия кнопки «Готово», табуляции и т. д., а затем нажав одну из двух кнопок.Вы должны увидеть, что тег выбора вернется к своему первоначальному значению с помощью кнопки «сенсорный запуск», и сохранит новое значение с помощью кнопки «мыши вниз».Обратите внимание, что onchange вызывает кнопку мыши, но не сенсорный запуск.
https://jsbin.com/felufudeke/1/edit?js,output
let selectElement = document.getElementById('select');
let touchStartButton = document.getElementById('touchStart');
let mouseDownButton = document.getElementById('mouseDown');
touchStartButton.ontouchstart = function (e) {
// on change has not fired yet...
selectElement.blur();
}
mouseDownButton.onmousedown = function (e) {
// on change HAS fired if iOS selector value was different
selectElement.blur();
}
Это преднамеренно и ожидается от браузера?Я лично ожидал, что «сенсорный запуск» и «нажатие мыши» вызовут «изменение» выделенного элемента select, так как я не смог найти никакой документации с подробностями этого поведения.
Есть ли способ в обработчике ontouchstart, чтобы я мог получить текущий "активный" выбор селектора iOS?