Я хочу загрузить изображение с помощью ckeditor.Я хочу удалить изображение из редактора в случае ошибки.Но каждый раз, когда я сталкиваюсь с этой ошибкой.
Uncaught TypeError: Cannot read property 'attributes' of null
at ckeditor.js:1275
at CKEDITOR.htmlParser.element.forEach (ckeditor.js:313)
at CKEDITOR.htmlParser.element.forEach (ckeditor.js:313)
at a.<anonymous> (ckeditor.js:1274)
at a.p (ckeditor.js:10)
at a.<anonymous> (ckeditor.js:12)
at a.CKEDITOR.editor.CKEDITOR.editor.fire (ckeditor.js:13)
at CKEDITOR.htmlDataProcessor.toDataFormat (ckeditor.js:335)
at $.getData (ckeditor.js:952)
at $.<anonymous> (ckeditor.js:386)
Каждый раз, когда изображение загружается, оно сохраняет его в массиве.И если новое изображение было загружено и произошла ошибка.Сравните со старыми изображениями.И нашел изображения с ошибками.Это мой код.
let oldImagesList = [];
let newImagesList = [];
editor.on('fileUploadResponse', function (evt) {
let editorData = this.getData();
let imgs = $(editorData).find('img').get();
newImagesList=[];
imgs.forEach(function (item) {
newImagesList.push(item.src);
});
evt.stop();
var data = evt.data,
xhr = data.fileLoader.xhr,
response = xhr.responseText.split('|');
let Res = JSON.parse(response);
console.log(evt)
Array.prototype.diff = function(a) {
return this.filter(function(i) {return a.indexOf(i) < 0;});
};
let diffs = $.unique( newImagesList.filter(x => !oldImagesList.includes(x)));
if (Res.uploaded === 0) {
evt.cancel();
let wrapper = new DOMParser();
wrapper.innerHTML = editorData;
if (diffs.length > 0) {
diffs.forEach(function (item) {
jQuery( editor.editable().$ ).find(`img[src='${item}']`).parent('figure').remove();
});
}
editorData = this.getData();
imgs = $(editorData).find('img').get();
newImagesList=[];
imgs.forEach(function (item) {
newImagesList.push(item.src);
});
}
oldImagesList = newImagesList.slice(0);
if (response[1]) {
data.message = response[1];
evt.cancel();
} else {
data.url = response[0];
}
});
спасибо.