Eche un vistazo a DOM Range spec. Usted puede obtener una Range
de la selección del usuario en Firefox usando:
var range = window.getSelection().getRangeAt(0);
Tenga en cuenta que algunos navegadores, incluyendo Firefox, permiten múltiples selecciones, que se puede acceder a través del método de la selección getRangeAt()
.
El Range
se expresa en términos de nodos DOM y desplazamientos dentro de esos nodos. Una vez que obtenga su Range
, no es sencillo hacer exactamente lo que desea, ya que los límites del rango podrían estar en diferentes nodos en diferentes niveles del árbol DOM, por lo que simplemente rodear el contenido del rango con una etiqueta no siempre es posible. Usted puede ser capaz de hacer algo como lo siguiente, a pesar de que va a crear un nuevo elemento de bloque para contener el contenido seleccionado:
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var div = document.createElement("div");
div.style.color = "yellow";
div.appendChild(selectionContents);
range.insertNode(div);
Otro, hacky, alternativa es utilizar el método de document
execCommand()
para modificar la selección (por ejemplo, configurándolo en un color particular) y luego usando document.querySelectorAll
o alguna biblioteca de selectores para seleccionar elementos con ese color y luego aplicarles un estilo.
Hola Bob Fanger hizo u encontró ninguna solución para this.If u tiene u puede sólo dime. – Warrior
No, cambiamos a TinyMCE, que resolvió el problema (de negocios). PD. TinyMCE tiene una gran API para extender su htmleditor. Puede verificar la implementación de http://wiki.moxiecode.com/index.php/TinyMCE:API/tinymce.Editor/selection –
. Sugiero que eche un vistazo a algunos (bien desarrollados) WYSIWYG htmleditor - tinymce, para ejemplo - para resolverlo. :) –