2010-01-25 15 views
12

He estado trabajando con objetos de selección/rango, y debido a la increíble cantidad de inconsistencias entre navegadores para selección/rango específicos (incluso más que el DOM) me preguntaba si había un marco eso me ayudaría a superarlos.JavaScript selection/range framework

+0

¿Has visto http://code.google.com/p/ierange/? –

+0

Roatin, ¡esto es exactamente lo que estaba buscando! ¿Puedes hacer una pregunta para que pueda votarte?:) –

+0

me refiero a la respuesta: D –

Respuesta

8

(Hecho una respuesta por la petición;)

Tome un vistazo a IERange:

IERange es un implementación completa de funciones del W3C DOM Ranges para Internet Explorer, permitiendo a los usuarios una escritura versión de navegador cruzado de su código de manipulación de rango.

Soporta API Rango:

  • document.createRange()
  • startContainer, startOffset, endContainer, endOffset, commonAncestorContainer, collapsed
  • setStart(), setEnd(), setStartBefore(), setStartAfter(), setEndBefore(), setEndAfter(), selectNode(), selectNodeContents(), collapse()
  • insertNode(), surroundContents()
  • extractContents(), cloneContents(), deleteContents()
  • compareBoundaryPoints(), cloneRange(), createContextualFragment(), toString()

Soporta las API de selección:

  • soporte del rango (de estilo Webkit)
  • window.getSelection()
  • addRange(), removeAllRanges(), getRangeAt(), toString()
+1

La mayor fortaleza de IERange son sus algoritmos para expresar un 'TextRange' en términos de nodos y compensaciones (como lo hace un Rango) y la conversión de dichos objetos en un' TextRange'. Sin embargo, no puede abstraer por completo las diferencias entre los dos: por ejemplo, el 'TextRange' subyacente cambiará en respuesta a los cambios en el DOM mientras que el' IERange' creado sobre él no reflejará estos cambios. También hay discrepancias entre cómo se representa la selección del usuario como un Rango, que se reducen al navegador. [continued] –

+1

También tenga en cuenta que crear un 'IERange' es mucho más lento que obtener un rango DOM en otros navegadores. Ninguno de estos son culpa de la biblioteca; es simplemente la naturaleza del problema. En resumen, el mejor uso con cuidado y conocimiento de la abstracción representa 'IERange'. –

1

fieldselection es un plugin de jquery muy útil para la selección/manipulación de rango.

+0

Sin embargo, solo funciona para textareas y entradas. –

13

He escrito una nueva biblioteca/intervalo de selección llamado Rangy que es similar en concepto a IERange sino que va mucho más allá. El núcleo está prácticamente completo y currently available to download. Actualmente estoy corregiendo y documentando, y debería ser solo unas pocas semanas antes de una versión completa.

ACTUALIZACIÓN 31 de agosto 2011

Rangy es ahora estable y en la versión 1.2 (downloads page).

+0

Gracias por tu gran trabajo en Rangy Tim Down. Estoy usando tu lib en mi nuevo proyecto y ya te envié un informe de fallas. Creo que sería una buena idea crear una lista de correo para que sea posible debatir cuestiones/características y sugerir nuevas funciones (tal vez con un parche). Por ejemplo, actualmente estoy tratando de obtener un startOffset y un endOffset para commonAncestorContainer en lugar de iniciar/finalizar contenedores. Esta sería una característica útil, creo. – Tom

Cuestiones relacionadas