2010-10-22 37 views
29

Tôi đã tìm kiếm câu trả lời cao và thấp nhưng không thành công.thay thế văn bản đã chọn trong div có thể chỉnh sửa được

Có giải pháp trình duyệt chéo nào để thay thế văn bản đã chọn trong div có thể chỉnh sửa nội dung không? Tôi chỉ muốn người dùng đánh dấu một số văn bản và thay thế văn bản được đánh dấu thành xxxxx.

Trả lời

63

Sau đây sẽ thực hiện công việc trong tất cả các trình duyệt chính:

function replaceSelectedText(replacementText) { 
    var sel, range; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      range = sel.getRangeAt(0); 
      range.deleteContents(); 
      range.insertNode(document.createTextNode(replacementText)); 
     } 
    } else if (document.selection && document.selection.createRange) { 
     range = document.selection.createRange(); 
     range.text = replacementText; 
    } 
} 
+4

Tôi không thể tin rằng đó là đơn giản. Nó hoạt động. Cảm ơn! – Judy

+0

Tính năng này không hoạt động đối với tôi trong Chrome (dán vào INPUT, TEXTAREA hoặc có thể chỉnh sửa nội dung). Tôi nghi ngờ đó là vì Chrome không hỗ trợ nhiều phạm vi. Nó rơi vào trường hợp window.getSelection, nhưng sau đó sel.rangeCount là false, và không có mệnh đề "else" .. –

+2

@DavidJeske: Điều này chắc chắn hoạt động trong Chrome cho các phần tử có thể chỉnh sửa nội dung, nhưng không ở đầu vào hoặc textareas: không Trình duyệt -IE, mã này dành riêng cho các lựa chọn trong nội dung thông thường. –

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