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后不起作用...
答案 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>