Я предлагаю подключить слушателей к ключевым событиям, запускаемым редактируемым элементом, хотя вам нужно знать, что события keydown
и keypress
запускаются до изменения самого содержимого. Это не будет охватывать все возможные способы изменения контента: пользователь может также использовать вырезание, копирование и вставку из меню «Редактировать» или контекстного браузера, поэтому вы можете обрабатывать события cut
copy
и paste
, Кроме того, пользователь может отбрасывать текст или другой контент, поэтому есть больше событий (например, mouseup
). Вы можете захотеть опросить содержимое элемента как резерв.
UPDATE 29 October 2014
Событие HTML5 input
- это ответ в долгосрочной перспективе , На момент написания он поддерживается для contenteditable
элементов в текущих браузерах Mozilla (из Firefox 14) и WebKit / Blink, но не в IE.
Демо:
document.getElementById("editor").addEventListener("input", function() {
console.log("input event fired");
}, false);
Please type something in here
Демонстрация: http://jsfiddle.net/ch6yn/2691/