Проблемы с contenteditable | IOS
Если на IOS внутри contenteditable вписать что-то, то проверка правописания выделит содержимое и предложит замену. Проблема в то, что если в этот момент очистить содержимое инпута, то выделение остается, а дальнейшие подсказки ломаются.
Как воспроизвести?
- Введите любое слово, чтобы началась автозамена
- Очистите инпут
- Удалите пару символов и снова введите что-то
Как видно на скринах, залипает выделение и ломается автозамена. Как я выяснил, причиной тому является e.preventDefault() (сломанные подсказки, про выделение не знаю), но без него я не могу сохранить фокус внутри div'a при очистке. Сталкивался ли кто-нибудь с такой проблемой и знает, как её решить.
const ref = document.querySelector('#editor');
const button = document.querySelector('#button');
const clickEditable = (e) => {
console.log(ref);
e.preventDefault();
ref.innerHTML = '';
}
button?.addEventListener('touchstart', clickEditable);
button?.addEventListener('mousedown', clickEditable);
<button id="button" style="height: 40px">SUBMIT</button>
<div style="border: 1px solid #333; padding: 4px;" id="editor" contentEditable="true" />