В настоящее время я использую CKEditor, и у меня возникают проблемы с удалением панели инструментов при нажатии. В настоящее время я хочу создавать экземпляры CKEditor динамически, когда пользователи нажимают на него.
Однако проблема возникает, когда я пытаюсь щелкнуть, не нажимая на панель инструментов. Когда я пытаюсь щелкнуть мышью на панели инструментов, он остается там, и он не запускает мой код onBlur. Это только когда я нажимаю на кнопку на панели инструментов или нажимаю, а затем нажимаю обратно в текстовую область, она удалит панель инструментов и запустит мой код onBlur.
Вот небольшой фрагмент кода, который я написал для создания экземпляра при нажатии. Я делаю что-то неправильно здесь, или мне не хватает части кода фокуса?
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="ckeditor\ckeditor.js"></script>
<script>
$(document).ready(function(){
CKEDITOR.disableAutoInline = true;
$("#abc").on('click', function(){
var ck = CKEDITOR.inline(CKEDITOR.document.getById('abc'));
});
});
</script>
</head>
<body>
<div id="abc" contenteditable="true" >
Edit this
</div>
</body>
</html>
Попробуйте удалить jquery при щелчке и просто разрешите ckeditor обрабатывать его
$(document).ready(function () {
CKEDITOR.disableAutoInline = true;
CKEDITOR.inline('abc');
});
ИЛИ
var abcEditor = CKEDITOR.inline('abc');
Поэтому вместо того, чтобы делать это нажатием, я сделал это так, чтобы при загрузке страницы он обнаружил все редактируемые области контента и создавал экземпляры ckeditor.
Первоначально я хотел использовать на клике, чтобы создать экземпляр динамически, поскольку я буду динамически заполнять вещи. Тем не менее, мне было проще просто создать экземпляр ckeditor при создании динамического содержимого.
Используя эту функцию, я могу создать новый экземпляр ckeditor при создании динамического содержимого, а также использовать функцию onblur для записи всего в мою базу данных.
Если у кого-нибудь есть какие-либо решения для получения необработанного html из ckediter, сообщите мне. Этот метод должен получить родительский элемент, а затем найти элемент и затем сохранить его, что для меня не звучит правильно. Поэтому, если у вас есть какие-либо предложения о том, как это сделать, я все открываю! благодарю!
if(CKEDITOR.instances[this.id] == undefined){
console.log("creating new instance");
var ck = CKEDITOR.inline(CKEDITOR.document.getById( this.id ));
ck.on('blur', function(e){
var id = e.editor.name;
var html = $("#"+id).parent()[0].outerHTML;
console.log(html);
$.ajax({
type: 'POST',
url: "saveHtml",
data: { content : html}
}).done(function(data) {
console.log(data);
console.log("finished sending data");
});
});
}else{
console.log("no instance created");
}