アプリケーションでCKリッチテキストエディタを使用しています。モーダルポップアップがあり、その中に3つのタブがあります。これらの各タブは、CKEditorを使用するフィールド呼び出しDescriptionがある同じ部分ビューをレンダリングします。 IE 11を使用すると、すべてが期待どおりに機能し、テキスト領域がCKエディターボックスに変わり、テキスト領域がリッチテキストエディターとして残るたびにタブ間を移動してタブが読み込まれます。ただし、私はChrome最初にモーダルボックスを開いたとき、各タブの説明テキスト領域が期待どおりにckエディターに変わり、それらの間をタブで移動すると、それぞれが正しくテキスト領域になります。 。ただし、Chromeモーダルボックスを閉じてレポエンすると、コンソールに上記のエラーが表示されますか?モーダルボックスを開いてタブ間を6回ナビゲートすると、同じエラーが表示されます。その後、CKリッチテキストエディタとして表示されるテキスト領域の機能が失われます。誰かが似たようなものを持っているか、可能な解決策を持っていますか。
私のjsファイルのコードは次のとおりです。
$(document).ready(function () {
var editor = CKEDITOR.instances['Description'];
if (editor) { editor.destroy(true); }
CKEDITOR.replaceAll();
});
3つのタブに表示される部分ビューからのcshtmlマークアップは次のとおりです。
<div class="row">
@Html.LabelFor(model => model.Description)
<div class="col-md-10">
@Html.TextAreaFor(model => model.Description)
</div>
</div>
このコードを使用してCKエディターを破棄します。
try {
CKEDITOR.instances['textareaid'].destroy(true);
} catch (e) { }
CKEDITOR.replace('textareaid');
私はCKEditor4.4.4でこれに対する解決策を思いつくことができました。
Ckeditor.js(縮小)の784行目:
a.clearCustomData();
次のように変更する必要があります。
if (a) {a.clearCustomData();}
また、784行目:
(d=a.removeCustomData("onResize"))&&d.removeListener();a.remove()
次のように変更する必要があります。
if (a){(d=a.removeCustomData("onResize"));if (d){d.removeListener();}a.remove()}
これで問題が解決したようです。また、ckeditorにバグレポートを提出して、問題を修正できるようにします。
修正はここにあります https://github.com/ckeditor/ckeditor-dev/pull/2 ckEditor内では、clearCustomDataが呼び出される前にiframeの存在をチェックします。これが発生する理由は、モーダルが閉じると、エディターインスタンスでdestroyを呼び出す前にiframeが削除されるためです。
トライ/キャッチは今のところ最善の回避策です。