2009-02-06 14 views
5

Estoy trabajando en una extensión de Firefox que manipulará el texto resaltado.¿Cómo se manipula el texto seleccionado a través de una extensión de Firefox?

En una página independiente, que puede obtener el texto seleccionado por:

selectedText = document.selection?document.selection.createRange().text; 

Entonces me manipular el texto seleccionado con operaciones de cadena en el área de texto en cuestión. Lamentablemente, eso no es posible para un complemento, ya que no sé dónde está el texto seleccionado del usuario.

¿Hay alguna manera de obtener el nombre del elemento en el que se selecciona el texto o alterar el texto seleccionado sin el nombre del elemento?

Respuesta

4
selectedText = content.getSelection().toString(); 
+2

Hm, leí "Estoy trabajando en una extensión de Firefox ..." – altblue

+1

y para probarse de una manera tonta, abra una página web aleatoria en Firefox, seleccione un texto en esa página, enfoque la barra de direcciones, pegue "javascript: void (alert (content.getSelection()))" (sin comillas), y presiona Enter. – altblue

0

que necesita para obtener el objeto de su gama de selección de usuario:

var userSelection; 
if (window.getSelection) 
    userSelection = window.getSelection(); 
else if (document.selection) // should come last; Opera! 
    userSelection = document.selection.createRange(); 

var rangeObject = getRangeObject(userSelection); 

...

function getRangeObject(selectionObject) { 
    if (selectionObject.getRangeAt) 
     return selectionObject.getRangeAt(0); 
    else { // Safari! 
     var range = document.createRange(); 
     range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset); 
     range.setEnd(selectionObject.focusNode, selectionObject.focusOffset); 
     return range; 
    } 
} 

... 

El objeto Range tiene iniciar y nodos finales de contenedores, etc ..

se puede encontrar más información en Quirksmode here y en w3.org here

+0

Gracias por la información. Traté de poner esas funciones en mi overlay.js, pero no logré alertar() sobre cualquier texto resaltado después de instalar el complemento. Soy un poco novato aquí, pero ¿es posible que poner el código de Safari y Opera en una extensión de Firefox es el problema? –

Cuestiones relacionadas