Я прошу прощения за мой плохой английский.Я сделал простой текстовый редактор wysiwyg и столкнулся с проблемой в браузере Firefox.Если фокус потерян из блока contenteditable, функция сохраняет выделение для последующего применения к нему действия через execCommand.В IE11, EDGE, Chrome все отлично, выделение сохраняется и вы можете восстановить его позже.В Firefox, если вы теряете фокус, нажимая на другой элемент, выбор этого элемента сохраняется, а не тот, с которым связано событие размытия.То есть событие запускается с опозданием и записывает в объект Selection ссылку на диапазон в элементе, по которому был выполнен щелчок.Такая ошибка возникает только тогда, когда фокус теряется из-за щелчка, при переключении на нажатие клавиши TAB все работает как надо.
Ниже приведен небольшой пример этой ошибки.Опять проблема возникает в Firefox.
function sel() {
var selection;
if (document.getSelection !== undefined) {
selection = document.getSelection();
if (selection.getRangeAt && selection.rangeCount) {
console.log(selection.getRangeAt(0));
}
} else if (document.selection && document.selection.createRange) {
console.log(document.selection.createRange());
}
};
document.getElementById("c").addEventListener("blur", sel, { capture: true });
<div id="c" contenteditable="true" style="width: 300px; height: 300px; border : 1px solid black;">ccccc</div>
<div id="b" style="width: 300px; height: 300px; background-color: green;">bbbbb</div>
Жду вашего совета, спасибо.