Я сейчас нахожусь в процессе миграции на CKEditor 5.
CKEditor 5 имеет элемент <media>
, который понижается до figure
с iframe
/ oembed
в нем , Я хочу, чтобы CKEditor уменьшил его до простого абзаца, содержащего iframe:
<!-- This -->
<media url="https://www.youtube.com"></media>
// Calling editor.getData()
<!-- Converts to: -->
<p><iframe src="https://www.youtube.com"></iframe></p>
К сожалению, я просто не могу заставить его работать. После копания в течение более 3 часов я просто не могу заставить его работать. Я всегда в конечном итоге с некоторыми "загадочными" ошибками. Я просто не могу полностью понять новую модель. Документы тоже не очень хорошо объясняют. Данные слишком разбросаны, и их очень сложно собрать.
Я пробовал что-то вроде:
editor.conversion.for('dataDowncast').elementToElement({
model: 'media',
view: (modelElement, viewWriter) => {
const url = modelElement.getAttribute('url');
return viewWriter.createUIElement('p', null, function(domDocument) {
const domElement = this.toDomElement(domDocument);
domElement.innerHTML = `<iframe src="${url}"></iframe>`;
return domElement;
});
},
priority: 'highest',
});
Uncaught CKEditorError: view-writer-cannot-break-ui-element
Я уверен, что просто что-то упустил. Я уверен, что моего понимания новой модели не хватает, поэтому я вынужден вносить все необходимые изменения.