Al seleccionar un bloque de texto (posiblemente abarcando muchos nodos DOM), ¿es posible extraer el texto y los nodos seleccionados usando Javascript?Obtener texto seleccionado y nodos seleccionados en una página?
Imagínese este código HTML:
<h1>Hello World</h1><p>Hi <b>there!</b></p>
Si el usuario inicia un evento mouseDown a partir de las "World ..." y luego un mouseUp incluso justo después de "no!", Espero que volvería :
Text : { selectedText: "WorldHi there!" },
Nodes: [
{ node: "h1", offset: 6, length: 5 },
{ node: "p", offset: 0, length: 16 },
{ node: "p > b", offset: 0, length: 6 }
]
He intentado poner el HTML en un área de texto pero eso solo me dará el texto seleccionado. No he probado el elemento <canvas>
, pero esa puede ser otra opción.
Si no es JavaScript, ¿hay alguna manera de hacerlo posible usando una extensión de Firefox?
¿qué es lo que se pasa a parentContainer tan r? No funcionó (método parentContainer) –
Whoops. No muy claro, pero ese debería ser un rango, he corregido el nombre de la variable. Estaba pensando que podría usarse así: var container = parentContainer (getRange()); Lo que no quiere decir que funcionará al 100%. El código pretende ser un ejemplo del tipo de trabajo que es necesario para hacer esto y puede ser deficiente. Querrá comprender las API con las que está tratando (ver enlaces). – Borgar
'parentContainer()' no es útil: no se garantiza que las dos ramas devuelvan lo mismo porque el método 'parentElement()' de 'TextRange' de IE siempre devolverá un elemento, mientras que' commonAncestorContainer' podría ser un nodo de texto. Además, no es necesario tener ningún navegador de olfateo (como implica el uso de 'msie'): puede detectar fácilmente los objetos y métodos que necesita. –