13

Tengo un escenario donde tengo algo de texto, que debe ser seleccionable por el usuario. El problema es que hay una superposición de IU en la parte superior, lo que impide seleccionar texto de forma predeterminada. La forma lógica de mantener la superposición y aún así poder seleccionar el texto, sería usar eventos sintéticos (use document.createEvent), pero por algún motivo, no funciona como se esperaba.Seleccionar texto detrás de otro elemento con createEvent

Parece que los eventos se han delegado correctamente y activan sus controladores, pero no se ha seleccionado ningún texto. Tengo un ejemplo here, que es una simplificación aproximada del problema.

Unas pocas notas

  1. En FF si se inicia su selección fuera de la superposición, que todavía son capaces de seleccionar el texto que desea, aunque sea bajo la superposición
  2. Cuando se tiene una normalidad selección en el área descubierta y hace clic en la superposición, sería de esperar de la mousedown evento delegado para eliminar la selección, pero no sucede

Am me falta un evento que también deben ser objeto de delegación (I tener mousedown, mousemove y mouseup)? ¿O es algún tipo de medida de seguridad por parte de los navegadores para desactivar dicho comportamiento (consulte la nota n ° 2)? ¿Alguna otra sugerencia sobre cómo obtener el resultado deseado? Sé que debería solucionar la solución de superposición actual por completo, pero ya tengo curiosidad sobre el problema en sí.

Respuesta

7

he encontrado dos soluciones para este problema:

  1. "puntero-eventos" propiedad CSS. Requiere IE 9.0+ sin embargo.
  2. parece que los chicos de ExtJS resuelto por el envío de eventos: demo, source, blog post
2

Sugeriría hacer el truco fácil: coloque el elemento transparente con el mismo contenido que el texto encima del texto y la superposición. Aquí está el demonstration.

P.S .: Desde mi experiencia, cualquier solución en la forma que sugiera será horrible. Se van a sufrir de incompatibilidades del navegador, los efectos secundarios de los alrededores de marcado y peinado etc.

+0

Técnicamente, createEvent debe estar perfectamente entre navegadores y no ver cómo el estilo podría afectar el comportamiento del navegador nativo, que debe ser idéntico a los eventos nativos y sintéticos. – zatatatata

Cuestiones relacionadas