У меня есть HTML-код в виде строки, и мне нужно обернуть все встроенные элементы внутри тега p
, без их рендеринга.
Пример:
<h2>Some heading</h2>
<p>Some content</p>
<strong>Some inline content</strong>
должен быть преобразован в
<h2>Some heading</h2>
<p>Some content</p>
<p><strong>Some inline content</strong></p>
Я обрабатываю HTML, создавая DOM в памяти.
function ensureRootLevelBlockTags(html) {
const psuedoDom = document.createElement('div');
psuedoDom.innerHTML = html;
const childNodes = psuedoDom.childNodes;
for (let i = 0; i < childNodes.length; i++) {
const currentNode = childNodes[i];
if (/* is currentNode is not a block element */) {
const newNode = document.createElement('p');
newNode.append(currentNode);
psuedoDom.insertBefore(newNode, childNodes[i]);
}
}
return psuedoDom.innerHTML;
}
ensureRootLevelBlockTags('<h2>Some heading</h2><p>Some content</p><strong>Some inline content</strong>');
Мне нужно условие, которое я могу использовать, чтобы проверить, является ли элементэлемент блока.
Редактировать:
Мы уже использовали tinymce в проекте и обнаружили, что объект tinymce.html.Schema
содержит список допустимых тегов и их допустимых дочерних элементов.Я использовал это как ссылку, чтобы проверить, могу ли я обернуть элемент внутри p
.