javascript - ultima - Seleccionando texto en el móvil Safari en iPhone
seguridad de safari (4)
Estoy tratando de facilitarle a un usuario de iPhone copiar texto en el portapapeles en un safari móvil. Como en el habitual "touch-hold-copy". Hay un bit específico de texto que quiero que el usuario copie. Tengo la opción completa de la marcación html para envolver el texto. ¿Cómo puedo hacerlo fácil, en lugar de abitrario? Por ejemplo:
¿Hay una manera de "seleccionar todo" el texto al hacer un touch-down usando javascript? Entonces, ¿un usuario podría simplemente mantener pulsado y luego elegir copiar?
¿Hay alguna manera de mostrar la opción "seleccionar todo"? Como puedes al escribir en un cuadro de texto? ¿Después de lo cual pueden elegir copiar?
Si no hay una solución javascript, ¿cómo puedo organizar el html para ayudar a Safari a seleccionar el fragmento de texto correcto fácilmente? ¿A diferencia de solo una palabra, o una envoltura div?
He probado onFocus = "this.select ()" para varios elementos, ninguno parece funcionar. También probé onClick.
Aquellos que han intentado portar un sitio que usa ZeroClipboard al iPhone pueden tener algunas ideas.
Aclamaciones
La salsa mágica para mí fue la combinación de estos tres:
onFocus="this.selectionStart=0; this.selectionEnd=this.value.length;" <!-- for big screens -->
onTouchEnd="this.selectionStart=0; this.selectionEnd=this.value.length;" <!-- for small screens -->
onMouseUp="return false" <!-- to stop the jitters -->
Me he encontrado con el mismo problema. El evento onfocus es el correcto para atrapar (onTouchstart no se activa si utiliza los botones del teclado del iPhone [next] / [prev]). Si coloca una alerta (); en su controlador onfocus = "", verá el cuadro de alerta emergente. El problema es this.select (); Todavía no he encontrado una respuesta a esto, pero cuando lo haga, lo publicaré aquí.
Pruebe onuchstart en lugar de onfocus. Onfocus dispara aprox. 500 ms después de touchend, igual que onclick, onmousedown y onmouseup. Consulte https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW7 para obtener más detalles sobre los eventos del mouse.
en lugar de this.select();
Utilicé lo siguiente y funcionó!
this.selectionStart=0;
this.selectionEnd=this.value.length;