Возможно, вы можете смоделировать события textInput
для манипулирования содержимым текстовой области.Изменения, внесенные таким образом, уважаются отменой / повтором, я думаю (я знаю, что они в Safari)
var element = document.getElementById('someTextarea');
var text = 'This text will be inserted in the textarea';
var event = document.createEvent('TextEvent');
event.initTextEvent('textInput', true, true, null, text);
element.dispatchEvent(event); // fire the event on the the textarea
По сути, текст вставляется так, как будто вы вставили его самостоятельно.Поэтому, если что-то выбрано, оно будет заменено текстом.Если выбора нет, текст будет вставлен в позицию каретки.И отмена / повтор должны работать нормально (отмена / восстановление всей вставленной строки за один раз), потому что браузер работает так, как будто вы напечатали / вставили его самостоятельно.
Как я уже сказал, я знаю, что это работает как шармс отменой / повтором в Safari, поэтому я предполагаю, что это работает и в Chrome.