2010-09-22 28 views
6

Vấn đề của tôi tương tự như this, nhưng tôi cần một cách để có được tọa độ của phía bên phải của vùng chọn với Javascript trong Firefox. Tôi đã thực hiện một ví dụ nhỏ để hiển thị những gì tôi có nghĩa là:Làm cách nào để lấy tọa độ của phần cuối của văn bản đã chọn bằng javascript?

alt text

Mã tôi nhận được từ các bài khác như sau:

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

này mang lại cho tôi tọa độ của đầu lựa chọn . Có cách nào để lấy lại tọa độ của phần cuối của vùng chọn không?

Trả lời

9

Có. Bit đó khá đơn giản: bạn chỉ cần gọi collapse(false) trên Phạm vi thu được từ vùng chọn. Hãy nhận biết rằng document.getBoxObjectFor() hiện đã được gỡ bỏ từ Mozilla, vì vậy bạn cần phương pháp nguyên tố giả của getBoundingClientRect() thay vì:

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 để được 3 giây nhanh hơn. Tôi không biết * getBoxObjectFor() * đã bị xóa. –

+1

Tôi nhớ rằng bởi vì một vài tháng trước MooTools đã phá vỡ vì nó đã phát hiện Mozilla bằng cách sử dụng một sniff cho 'getBoxObjectFor()' (một phương pháp mà nó không bao giờ được sử dụng, theo như tôi biết). –

+0

thu gọn (sai) chính xác là những gì tôi đang tìm kiếm. Cảm ơn bạn rất nhiều. Bạn đã giúp tôi rất nhiều. – Bob

0
var r = range.cloneRange(); 
r.collapse(false); // collapses range clone to end of original range 
r.insertNode(dummy); 
// document.getBoxObjectFor(dummy), etc. 
Các vấn đề liên quan