JavaScript на iOS: открытие элемента выбора HTML

Я не надеюсь, но спрошу на всякий случай.

Я хотел бы иметь возможность использовать JavaScript для открытия элемента select в мобильном Safari для iPhone / iPad.

Обширный поиск Google / Stack Overflow показывает, что многие люди хотели бы иметь возможность делать это в браузерах в целом, но это не поддерживается (интересно, почему?). Предлагались различные уловки, от вызова focus () для элемента select и изменения его свойства size , чтобы сделать видимыми больше элементов option , либо создания полностью имитационной выберите элемент с помощью элементов

и
    . Я, однако, хотел бы использовать собственные элементы управления выбора в браузере в iPad и iPhone.

    Я подумал, может быть, кто-то может знать о проприетарном методе Apple WebKit для этого. Это будет что-то вроде:

    var myselect = document.getElementsByTagName("select")[0];
    myselect.open(); // this method doesn't exist
    

    В качестве бонуса было бы также полезно знать логическое свойство, которое сообщает, открыт / активен ли элемент select в данный момент (т.е. е. не только то, есть ли у элемента фокус). Я знаю, что могу решить эту проблему, отслеживая события щелчка и изменения, но было бы полезно простое свойство.

    Принятие желаемого за действительное?


    ОБНОВЛЕНИЕ:
    У меня еще нет ответа, но я нашел это имитирует mousedown успешно открывает выбранный элемент в Google Chrome, но не в iPad или Firefox и так далее:

    function simulateMouseEvent(eventName, element) {
      var evt = document.createEvent("MouseEvents");
      evt.initMouseEvent(eventName, true, true, window,
        0, 0, 0, 0, 0, false, false, false, false, 0, null);
      element.dispatchEvent(evt);
    }
    
    simulateMouseEvent("mousedown", select);
    

    ОБНОВЛЕНИЕ:
    Я спросил родственное, но другое (и точно так же без ответа! ) вопрос о полях выбора здесь: Существует ли событие DOM, которое срабатывает при закрытии элемента выбора HTML?

    15
    задан Community 23 May 2017 в 12:32
    поделиться