No tengo esperanzas, pero pregunto por las dudas.JavaScript en iOS: abrir un elemento de selección HTML
Me gustaría poder usar JavaScript para abrir un elemento de selección en Safari móvil para iPhone/iPad.
Una búsqueda extensa de Google/Stack Overflow muestra que a mucha gente le gustaría poder hacer esto en los navegadores en general, pero no es compatible (¿por qué no ?, me pregunto). Se han sugerido varios hacks, desde llamar al focus()
en el elemento de selección y cambiar su propiedad size
para hacer visibles más elementos option
, o construir un elemento de selección completamente falso con elementos <div>
y <ul>
. Sin embargo, me gustaría utilizar los controles de selección nativos del navegador en iPad y iPhone.
Me preguntaba, tal vez, alguien podría saber de un método patentado de Apple WebKit para hacer esto. Sería algo así como:
var myselect = document.getElementsByTagName("select")[0];
myselect.open(); // this method doesn't exist
Como beneficio adicional, también sería útil saber de una propiedad booleano que indica si el elemento de selección está actualmente abierto/activo, o no (es decir, no sólo si el elemento tiene enfoque). Sé que puedo resolver esto haciendo un seguimiento del clic y cambio de eventos, pero una propiedad simple sería útil.
¿Desea pensar?
ACTUALIZACIÓN:
Todavía no tengo la respuesta, pero me he dado cuenta que la simulación de un mousedown
abre con éxito un elemento de selección en Google Chrome, pero no IPAD o Firefox y así sucesivamente:
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);
ACTUALIZACIÓN:
he hecho una pregunta relacionada, pero diferente (y de manera similar sin respuesta!) en cuadros de selección aquí: Is there a DOM event that fires when an HTML select element is closed?
Podría forzar un clic/toque en ese elemento? – Seth
¿Podría decirnos cuál es el efecto que desea lograr? ¿Qué valor agregado para el usuario quiero decir? – mplungjan
@Seth - ¿cómo? @mplungjan - Es para una aplicación de visualización de datos basada en SVG, donde diferentes gestos pueden desencadenar diferentes resultados. Por ejemplo, el usuario puede arrastrar un círculo alrededor de la pantalla, pero si al mismo círculo se le da un solo toque del dedo, entonces quiero que aparezca un cuadro de selección lleno de opciones. No deseo solicitar 2 clics: uno para mostrar/enfocar la selección, +1 para mostrar las opciones. Yo * podría * hacer que el elemento seleccionado sea aquel con el que el usuario interactúa, por lo que se abre al hacer clic y podría mover el elemento círculo si se arrastra el elemento seleccionado, pero preferiría evitarlo si es posible. – Premasagar