2010-09-22 13 views
6

Sorunum this ile benzer, ancak Firefox'ta Javascript ile seçimin sağ tarafındaki koordinatları almanın bir yoluna ihtiyacım var.Seçilen metnin koordinatlarını javascript ile nasıl alabilirim?

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); 

Bu bana seçimin başından koordinatlarını veriyor:

alt text

diğer görevinden var kod şudur: Ben ne anlama geldiğini göstermek için küçük bir örnek yaptık . Seçimin sonunun koordinatlarını almak için herhangi bir yolu var mı?

cevap

9

Evet. Bu biraz basit: Seçimden elde edilen Menzil'de collapse(false)'u aramanız yeterlidir. document.getBoxObjectFor() şimdi Mozilla çıkarıldığını unutmayın, bu nedenle yerine kukla elementin getBoundingClientRect() yöntemini gerekir: Daha hızlı 3 saniye olduğu için

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. Bilmiyordum * getBoxObjectFor() * zaten kaldırılmıştı. –

+1

Birkaç ay önce MooTools'un bozulduğunu hatırlıyorum çünkü Mozilla'yı 'getBoxObjectFor()' için bir sniff kullanarak tespit etti (bildiğim kadarıyla hiç kullanmadığı bir yöntem). –

+0

çöküşü (yanlış) tam olarak aradığım şey. Çok teşekkür ederim. Bana çok yardımcı oldun. – Bob

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