Nie mam nadziei, ale zapytam na wszelki wypadek.JavaScript na iOS: otwarcie elementu wyboru HTML
Chciałbym móc korzystać z JavaScript, aby otworzyć wybrany element w mobilnej przeglądarce Safari na iPhone'a/iPada.
Rozległe przeszukiwanie Google/stosu przepełnień pokazuje, że wiele osób chciałoby to zrobić w ogóle w przeglądarkach, ale nie jest obsługiwane (dlaczego nie, zastanawiam się?). Zaproponowano różne hacki, wywołując focus()
na elemencie select i zmieniając jego właściwość size
, aby uwidocznić więcej elementów option
lub konstruując całkowicie fałszywy element zaznaczenia z elementami <div>
i <ul>
. Chciałbym jednak użyć natywnej kontroli wyboru przeglądarki na iPadzie i iPhonie.
Zastanawiam się, po prostu, może ktoś może znać zastrzeżoną metodę Apple WebKit, aby to zrobić. To byłoby coś takiego:
var myselect = document.getElementsByTagName("select")[0];
myselect.open(); // this method doesn't exist
jako bonus, to byłoby również przydatny wiedzieć o właściwości Boolean, która mówi, czy select elementem jest obecnie otwarty/aktywny, czy nie (czyli nie tylko, czy element ma ostrość). Wiem, że mogę to rozwiązać, śledząc kliknięcia i zmieniając wydarzenia, ale przydatna byłaby prosta właściwość.
Pobożne życzenia?
UPDATE:
Jeszcze nie ma odpowiedzi, ale odkryłem, że symulowanie mousedown
powodzeniem otwiera wybierz element w Google Chrome, ale nie iPad lub Firefox i tak dalej:
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:
Poprosiłem powiązany, ale inny (i podobnie bez odpowiedzi!) pytanie na wybranych polach tutaj: Is there a DOM event that fires when an HTML select element is closed?
Mógłbyś wymusić kliknij/dotknij tego elementu? – Seth
Czy możesz nam powiedzieć, jaki efekt chcesz osiągnąć? Jaką wartość dodaną dla użytkownika mam na myśli. – mplungjan
@Seth - jak? @mplungjan - Jest to aplikacja do wizualizacji danych oparta na SVG, w której różne gesty mogą powodować różne wyniki. Na przykład użytkownik może przeciągać kółko po ekranie, ale jeśli ten sam okrąg otrzymuje pojedyncze dotknięcie palcem, chcę, aby pojawiło się pole wyboru z pełnymi opcjami. Nie chcę wymagać dwóch kliknięć: jednego, by pokazać/ustawić ostrość, +1, aby pokazać opcje. Mogę * uczynić element select tym, z którym użytkownik wchodzi w interakcję, więc otwiera się po kliknięciu i mogę przesuwać element circle, jeśli wybrany element jest przeciągany, ale wolałbym tego uniknąć, jeśli to możliwe. – Premasagar