Không, không có. IE có các đối tượng TextRange
để thực hiện công việc. IE> = 9 và mọi thứ khác trong thời gian dài vừa qua có các thuộc tính selectionStart
và selectionEnd
trên văn bản và đầu vào văn bản. Tác vụ cụ thể này không quá xấu: sau đây sẽ xóa lựa chọn hiện tại (nếu có), chèn văn bản vào dấu mũ và đặt lại dấu mũ ngay sau văn bản được chèn vào, trong tất cả các trình duyệt chính:
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}
Nguồn
2010-07-22 11:57:54
Cảm ơn rất nhiều, nghĩ rằng các trình duyệt có thể đã di chuyển trong vài năm qua nhưng rõ ràng là IE vẫn chọn khác nhau. – richw81
Tin tốt là IE 9 có 'selectionStart' và' selectionEnd'. –
Điều này làm việc tuyệt vời cho việc triển khai của tôi trong cả ba trình duyệt, vấn đề duy nhất tôi đã thay thế văn bản đã chọn. Nếu tôi thay thế val.slice (0, endIndex) bằng val.slice (0, startIndex), nó cung cấp chức năng làm nổi bật vùng chọn và thay thế nó bằng văn bản được thêm vào. Chỉ dành cho những người khác cần cùng chức năng tôi đã làm. – SomeoneRandom