Я не надеюсь, но я спрошу на всякий случай.
Я бы хотел использовать JavaScript для открытия элемента select в мобильном Safari для iPhone / iPad.
Обширный поиск в Google / Stack Overflow показывает, что многие люди хотели бы иметь возможность делать это в браузерах в целом, но это не поддерживается (почему бы и нет, интересно?). Были предложены различные способы взлома: от вызова focus()
элемента select и изменения его свойства size
, чтобы сделать видимыми больше элементов option
, или создания полностью фиктивного элемента select с элементами <div>
и <ul>
. Однако я хотел бы использовать встроенные элементы управления браузером в iPad и iPhone.
Я подумал, может быть, кто-то знает о собственном методе Apple WebKit для этого. Это было бы что-то вроде:
var myselect = document.getElementsByTagName("select")[0];
myselect.open(); // this method doesn't exist
В качестве бонуса было бы также полезно узнать логическое свойство, которое сообщает, открыт ли / активен элемент выбора в настоящее время или нет (т. Е. Не только имеет ли элемент фокус). Я знаю, что могу решить эту проблему, отслеживая события нажатия и изменения, но было бы полезно простое свойство.
Желаемое за действительное?
UPDATE:
У меня пока нет ответа, но я обнаружил, что имитация 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);
UPDATE:
Я задал связанный, но другой (и так же оставшийся без ответа!) Вопрос о полях выбора здесь: Есть ли событие DOM, которое срабатывает, когда закрывается HTML-элемент выбора?