2010-11-15 14 views
21

Trong JavaScript, có nhiều phương pháp khác nhau để truy cập lựa chọn văn bản của người dùng và tạo các lựa chọn văn bản (hoặc phạm vi) - xem http://www.quirksmode.org/dom/range_intro.html.Bạn có thể đặt và/hoặc thay đổi lựa chọn văn bản của người dùng bằng JavaScript không?

Theo trang đó, bạn có thể tạo một phạm vi theo lập trình và truy cập văn bản trong đó. Nhưng làm điều này không thay đổi lựa chọn văn bản của người dùng hoặc khiến người dùng có một số văn bản đã chọn nếu họ chưa chọn.

Bạn có thể đặt và/hoặc thay đổi lựa chọn văn bản của người dùng bằng JavaScript không?

+1

có nghĩa là bạn muốn văn bản nhất định trên trang đột nhiên xuất hiện được chọn? Màu xanh nổi bật và mọi thứ? –

+0

@Shadow: yup, đúng vậy. –

Trả lời

31

Có. Trong tất cả các trình duyệt, bạn có thể nhận được một hoặc nhiều Range s hoặc TextRange từ lựa chọn của người dùng và cả hai RangeTextRange có các phương pháp để thay đổi nội dung của dải ô.

CẬP NHẬT

Bạn có thể thiết lập lựa chọn của người dùng bằng cách tạo ra một Range và thêm nó vào các đối tượng Selection trong hầu hết các trình duyệt và bằng cách tạo ra một TextRange và gọi phương thức select() của nó trong IE < = 8.

Ví dụ: để đặt lựa chọn để bao gồm nội dung của một phần tử:

function selectElementContents(el) { 
    if (window.getSelection && document.createRange) { 
     var sel = window.getSelection(); 
     var range = document.createRange(); 
     range.selectNodeContents(el); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } else if (document.selection && document.body.createTextRange) { 
     var textRange = document.body.createTextRange(); 
     textRange.moveToElementText(el); 
     textRange.select(); 
    } 
} 

Cũng có một số phương thức của đối tượng Selection có thể được sử dụng để thay đổi lựa chọn của người dùng trong các trình duyệt không phải của IE. Nếu bạn có thể cụ thể hơn về cách bạn muốn thay đổi lựa chọn thì sẽ dễ dàng hơn để giúp đỡ.

+0

Ah vâng, xin lỗi, tôi không cụm từ câu hỏi rất hay - tôi thực sự đang tìm cách đặt lựa chọn văn bản của người dùng khi họ chưa có. –

+0

là có thể chọn các phạm vi khác nhau cùng một lúc. Tôi muốn có thể chọn nhiều phần văn bản không liên tục. – Techsin

+1

@Techsin: Có, nhưng chỉ trong Firefox. Gọi 'addRange()' cho mỗi phạm vi bạn muốn chọn. –

Các vấn đề liên quan