Несколько дней назад я опубликовал вопрос о том, как обновить текст в Internet Explorer. Как оказалось, использованный метод не работает и в Firefox.
Это заставило меня задуматься, есть ли способ изменить значение текстовой области, а также обновить очередь отмены/повторения (вызов ctrl-Z
или document.execCommand('undo');
)
Пока я нашел две возможности, но они не работают во всех браузерах:
Опция 1:
var event = document.createEvent('TextEvent');
event.initTextEvent('textInput', true, true, null, text, 9, "en-US");
textarea.focus();
textarea[0].setSelectionRange(selection.start, selection.end);
textarea[0].dispatchEvent(event);
Примечание. Не работает в IE (вообще) и Firefox.
Вариант 2:
document.execCommand("insertText", false, "the text to insert");
Не работает в IE (проверено под 9, но вроде вообще не реализовано), в других браузерах не знаю.