Узлы DOM генерируют HTML5 Возможно? - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу создать файл html5, используя методы узла DOM, возможно ли это?

Я уже пытался сделать, но я не могу найти правильный код для генерации с Шаблон "! DOCTYPE ".

Я хочу эту структуру:

<!DOCTYPE html>
........
.......
.....
...
..
</html>

1 Ответ

1 голос
/ 04 апреля 2019

Конечно, вы можете сгенерировать узел , вам просто нужно использовать метод document.implementation.createDocumentType().

Однако создание документа HTML5 является довольно обременительным (по крайней мере, когда дело доходит до строкового преобразования). Действительно, нет пространства имен HTML5, и ваш документ HTML5 на самом деле является XHTML, когда-то анализируемым в DOM:

console.log(document.documentElement.namespaceURI);

Таким образом, когда вы зафиксируете этот документ, у вас будут атрибуты xmlns="http://www.w3.org/1999/xhtml" для всех ваших элементов.

Чтобы избежать этого, вам действительно нужно сгенерировать все ваши элементы с пространством имен null:

// Our <!DOCTYPE html> node
const doctype = document.implementation.createDocumentType('html', '', ''); 
// A new HTML5 document
const doc = document.implementation.createDocument("", 'html', doctype);

// We need to force null NS
const body = doc.createElementNS(null, 'body');
body.appendChild(doc.createTextNode('hello'));

doc.documentElement.appendChild(body);

const str = (new XMLSerializer).serializeToString(doc);

console.log(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...