CK编辑器 - 未捕获的TypeError:无法在Chrome中读取null的属性'clearCustomData'

Ctr*_*eat 10 javascript jquery google-chrome ckeditor

我在我的应用程序中使用CK Rich Text Editor.我有一个模态弹出窗口,在其中我有三个选项卡 - 每个选项卡呈现相同的局部视图,其中我有一个字段调用描述这是我使用CK编辑器.当我使用IE 11时,一切都按预期工作,Tabs加载Textarea变成CK编辑框,每次文本区域保持为富文本编辑器时在标签之间导航.但是,当我第一次打开模式框时,我看到Chrome中的奇怪行为,每个选项卡上的描述文本区域都按预期变成了ck编辑器,而我在它们之间的选项卡中每个选项卡都是正确的文本区域.但是在Chrome中如果我关闭模态框并重新启动我在控制台中得到上面的错误?如果我打开模态框并在选项卡之间导航6次,我会出现相同的错误,然后丢失文本区域的功能,作为CK富文本编辑器.有没有人有类似的东西或有可能的解决方案.

我的js文件中的代码如下:

$(document).ready(function () {

    var editor = CKEDITOR.instances['Description'];
    if (editor) { editor.destroy(true); }
    CKEDITOR.replaceAll();

});
Run Code Online (Sandbox Code Playgroud)

在3个选项卡中呈现的局部视图中的cshtml标记如下:

 <div class="row">
                @Html.LabelFor(model => model.Description)
                <div class="col-md-10">
                    @Html.TextAreaFor(model => model.Description)
                </div>
            </div>
Run Code Online (Sandbox Code Playgroud)

ali*_*aei 9

使用此代码销毁CK编辑器:

 try {
     CKEDITOR.instances['textareaid'].destroy(true);
 } catch (e) { }
 CKEDITOR.replace('textareaid');
Run Code Online (Sandbox Code Playgroud)


Jef*_*eil 6

我已经能够在CKEditor 4.4.4中找到解决方案.

在ckeditor.js(缩小)中,第784行:

a.clearCustomData();
Run Code Online (Sandbox Code Playgroud)

应改为:

if (a) {a.clearCustomData();}
Run Code Online (Sandbox Code Playgroud)

也在第784行:

(d=a.removeCustomData("onResize"))&&d.removeListener();a.remove()
Run Code Online (Sandbox Code Playgroud)

应改为:

if (a){(d=a.removeCustomData("onResize"));if (d){d.removeListener();}a.remove()}
Run Code Online (Sandbox Code Playgroud)

这似乎解决了我的问题,我还将提交ckeditor的错误报告,以便他们也可以修复它.