Me gustaría poder convertir la posición actual del mouse en un rango, en particular en CKEditor.JavaScript convierte la posición del mouse al rango de selección
El CKEditor proporciona una API para establecer el cursor de acuerdo con un rango:
var ranges = new CKEDITOR.dom.range(editor.document);
editor.getSelection().selectRanges([ ranges ]);
Desde CKEditor ofrece esta API, el problema puede ser simplificado mediante la eliminación de este requisito y acaba de encontrar una manera de producir el rango de el mouse coordina sobre un div que contiene varios elementos HTML.
Sin embargo, esto no es lo mismo que convertir una coordenada del mouse en la posición del cursor en un área de texto ya que las áreas textareas han fijado anchos de columna y alturas de fila donde el CKEditor representa HTML a través de un iframe.
Según this, parece que el rango se puede aplicar a los elementos.
¿Cómo calificaría el rango de inicio/final más cercano a la posición actual del mouse?
Edit: Un ejemplo de cómo uno puede usar la API de ckeditor para seleccionar un rango en el evento mouseup.
editor.document.on('mouseup', function(e) {
this.focus();
var node = e.data.$.target;
var range = new CKEDITOR.dom.range(this.document);
range.setStart(new CKEDITOR.dom.node(node), 0);
range.collapse();
var ranges = [];
ranges.push(range);
this.getSelection().selectRanges(ranges);
});
El problema con el ejemplo anterior es que el nodo de destino del evento (e.data. $. Objetivo) solamente está disparando para los nodos tales como HTML, el cuerpo o IMG pero no para los nodos de texto. Incluso si lo hiciera, estos nodos representan trozos de texto que no admitirían colocar el cursor en la posición del mouse dentro de ese trozo de texto.