0
Webアプリケーションは、ckeditorエディタを定期的に作成および破棄します。 Chromeでメモリリークが発生しています。プロファイリングした後、ckeditor.tools.bindの呼び出しにより、ckeditorへの参照が保持されているようです。 editor.destroyはこれらのバインディングを削除する必要がありますか?そうでない場合は、自分で削除する方法はありますか?問題を呈するckeditor.tools.bindで追加されたckeditorイベントのバインド解除
例コード(タイムアウトがタイミングが問題であるかどうかを確認するために追加された)
var editor;
function replaceDiv() {
if (editor) {
editor.destroy();
}
setTimeout(function() {
editor = CKEDITOR.replace(document.getElementById("editable2"));
setTimeout(function() { replaceDiv()}, 1000);
}, 1000);
}
理論上は、 CKEDITORのようなオブジェクトが作成され、それ自体がクリーンアップされない場合、この種の問題が発生する可能性があります。 – AlfonsoML
実際にバインディングに関連しているかどうかはわかりませんが、破棄を呼び出した直後にDOMから要素を削除するという事実と関係していると思います。 – Doogal
確かに問題になる可能性があります。私はdestroyメソッドが同期的であるかどうか分からず、問題が見つかった場合はエラーを表示せずに停止するかもしれません。確認するために、1秒のタイムアウトで要素を削除しようとすることはできますか? – AlfonsoML