Tôi muốn có thể chuyển đổi vị trí chuột hiện tại thành một phạm vi, trong CKEditor nói riêng.JavaScript chuyển đổi vị trí chuột thành phạm vi lựa chọn
Các ckeditor cung cấp một API để thiết lập con trỏ theo một khoảng:
var ranges = new CKEDITOR.dom.range(editor.document);
editor.getSelection().selectRanges([ ranges ]);
Kể từ ckeditor cung cấp API này, vấn đề có thể được đơn giản hóa bằng cách loại bỏ yêu cầu này và chỉ cần tìm một cách để tạo ra khoảng từ chuột tọa độ trên một div chứa các phần tử HTML khác nhau. Tuy nhiên, điều này không giống như chuyển đổi tọa độ chuột thành vị trí con trỏ trong vùng văn bản vì textareas có độ rộng cột cố định và chiều cao hàng nơi CKEditor hiển thị HTML thông qua khung nội tuyến.
Dựa trên this, có vẻ như phạm vi có thể được áp dụng cho các phần tử.
Bạn sẽ tìm ra phạm vi bắt đầu/kết thúc gần nhất với vị trí chuột hiện tại như thế nào?
Chỉnh sửa: Ví dụ về cách người dùng có thể sử dụng API ckeditor để chọn phạm vi trên sự kiện di chuột.
editor.document.on('mouseup', function(e) {
this.focus();
var node = e.data.$.target;
var range = new CKEDITOR.dom.range(this.document);
range.setStart(new CKEDITOR.dom.node(node), 0);
range.collapse();
var ranges = [];
ranges.push(range);
this.getSelection().selectRanges(ranges);
});
Vấn đề với ví dụ trên là nút mục tiêu sự kiện (e.data. $. Mục tiêu) chỉ bắn cho các nút như HTML, BODY, hoặc IMG nhưng không cho các nút văn bản. Ngay cả khi nó đã làm, các nút này đại diện cho khối của văn bản mà sẽ không hỗ trợ thiết lập con trỏ đến vị trí của con chuột trong đoạn văn bản đó.