2010-09-22 13 views
6

Mi problema es similar al this, pero necesito una forma de obtener las coordenadas del lado derecho de la selección con Javascript en Firefox. Hice un pequeño ejemplo para mostrar lo que quiero decir:¿Cómo obtener las coordenadas del final del texto seleccionado con javascript?

alt text

El código que tengo de los otros post es el siguiente:

var range = window.getSelection().getRangeAt(0); 
var dummy = document.createElement("span"); 
range.insertNode(dummy); 
var box = document.getBoxObjectFor(dummy); 
var x = box.x, y = box.y; 
dummy.parentNode.removeChild(dummy); 

Esto me da las coordenadas del principio de la selección . ¿Hay alguna forma de recuperar las coordenadas del final de la selección?

Respuesta

9

Sí. Ese bit es bastante simple: solo necesita llamar al collapse(false) en el rango obtenido de la selección. Tener en cuenta que document.getBoxObjectFor() ahora se ha quitado de Mozilla, por lo que necesita getBoundingClientRect() método del elemento separador en su lugar:

var range = window.getSelection().getRangeAt(0); 
range.collapse(false); 
var dummy = document.createElement("span"); 
range.insertNode(dummy); 
var rect = dummy.getBoundingClientRect(); 
var x = rect.left, y = rect.top; 
dummy.parentNode.removeChild(dummy); 
+0

+1 por ser de 3 segundos más rápido. No sabía * getBoxObjectFor() * ya había sido eliminado. –

+1

Lo recordé porque hace unos meses MooTools se rompió porque estaba detectando Mozilla usando un sniff para 'getBoxObjectFor()' (un método que nunca usó, hasta donde yo sé). –

+0

colapso (falso) es exactamente lo que estaba buscando. Muchas gracias. Me ayudaste mucho. – Bob

0
var r = range.cloneRange(); 
r.collapse(false); // collapses range clone to end of original range 
r.insertNode(dummy); 
// document.getBoxObjectFor(dummy), etc. 
Cuestiones relacionadas