未定义CKEditor UI空间

时间:2014-06-16 22:15:43

标签: javascript jquery ckeditor

当我尝试运行editor.ui.space函数时,

null被设置为ckeditor

我用ajax拉入我的内容,在成功或完成后,然后我将html插入dom,然后直接尝试使用默认选项绑定我的编辑器。

示例:

$.get('url', function(data){
    $('body').html(data.content);
    $('textarea.content').ckeditor();
});

这直接消失,因为没有设置ui-spaces。我不知道为什么,但如果我设置超时,比如500,并运行ckeditor函数,它可以正常工作。

$.get('url', function(data){
    $('body').html(data.content);
    var t = setTimeout(function() {
        // This does work fine with no problems, why?
        $('textarea.content').ckeditor();
        clearTimeout(t);
    }, 500);
});

为什么在将它插入dom后不起作用...

5 个答案:

答案 0 :(得分:1)

window.onload = function(){
        setTimeout(function(){
            //CKEDITOR
            CKEDITOR.replace('selector_ID');
            CKEDITOR.config.height = 100;
            //END CKEDITOR
        },0);
    }

答案 1 :(得分:1)

在Laravel中,我注意到,如果我从开头部分省略或禁用app.js脚本,此问题就会消失。

看看头部并找出

<script src="{{ asset('js/app.js') }}" defer></script>

现在将其删除或评论。

//<script src="{{ asset('js/app.js') }}" defer></script>

请注意: 如果在页面中使用vue.js,则需要app.js脚本。如果是这样,您必须找出替代解决方案。

我不使用vue.js,因此不用担心将其删除。

注意:

我知道,这不是一个成熟的答案。但这可以帮助其他人找到真正的解决方案。

答案 2 :(得分:0)

jquery html函数是同步的,但内容仍然需要一段时间才能加载,而这在调用$('textarea.content').ckeditor();时有时尚不可用

请尝试使用此而不是超时,以确保在初始化ckeditor之前内容可用,超时是一种解决方案,但它不是可靠的。

$.get('url', function(data){
    $('body').html(data.content).promise().done(function() {
         $('textarea.content').ckeditor();
    });

});

答案 3 :(得分:0)

我今天遇到了同样的问题。

就我而言,我只是更改:

<script src="{{ asset('js/app.js') }}"defer></script>

收件人:

<script src="{{ asset('js/app.js') }}"></script>

答案 4 :(得分:0)

我在使用AngularJS和JQuery的网站上遇到了同样的问题。似乎只需在JQuery 'document.ready()'指令中初始化CkEditor(版本4 ...)以确保它是最后一个要运行的Javascript库即可解决。

<script language="javascript" >
$(document).ready(
    function()
    {
        CKEDITOR.replace( 'editor' );
    }
 );
 </script>