結論
changeイベントは発火しないけど、inputイベントは発火しています。
例
以下のような要素があったとします。
<div id="editor" contenteditable="true"></div>
これに対する入力がなされたタイミングで処理したい場合があります。
そこで、changeイベントで取れるかな?と思って以下のように書きたくなると思います。
//ダメな例
let editor = document.getElementById("editor");
editor.addEventListener("change",function(){
console.log("change");
});
しかし、入力してもchangeイベントは発火しません。
contenteditableは、次のようにinputイベントで受け取りましょう。
//よい例
let editor = document.getElementById("editor");
editor.addEventListener("input",function(){
console.log("input");
});