¿Cómo puedo formatear/ordenar/embellecer HTML en JavaScript? I have tried doing a search/replace for angle brackets (<
, >
) and indenting accordingly. Pero, por supuesto, no tiene en cuenta cuando es JS o CSS, etc. dentro del HTML.Cómo formatear/ordenar/embellecer en JavaScript
La razón por la que quiero hacer esto es que he creado un editor de contenido (CMS) que tiene vistas de código fuente y WYSIWYG. El problema es que el código escrito por el editor WYSIWYG normalmente es una sola línea. Entonces me gustaría un JavaScript que pueda formatear esto en una forma más legible bajo demanda.
Aquí lo que tengo hasta ahora:
function getIndent(level) {
var result = '',
i = level * 4;
if (level < 0) {
throw "Level is below 0";
}
while (i--) {
result += ' ';
}
return result;
}
function style_html(html) {
html = html.trim();
var result = '',
indentLevel = 0,
tokens = html.split(/</);
for (var i = 0, l = tokens.length; i < l; i++) {
var parts = tokens[i].split(/>/);
if (parts.length === 2) {
if (tokens[i][0] === '/') {
indentLevel--;
}
result += getIndent(indentLevel);
if (tokens[i][0] !== '/') {
indentLevel++;
}
if (i > 0) {
result += '<';
}
result += parts[0].trim() + ">\n";
if (parts[1].trim() !== '') {
result += getIndent(indentLevel) + parts[1].trim().replace(/\s+/g, ' ') + "\n";
}
if (parts[0].match(/^(img|hr|br)/)) {
indentLevel--;
}
} else {
result += getIndent(indentLevel) + parts[0] + "\n";
}
}
return result;
}
veces las mejores preguntas/respuestas están fuera de tema. – NilsB
basura @NilsB esto está en el tema, de hecho, ya se había cerrado como fuera del tema y luego volver a volver a anotar – Petah
[Aquí está el formateador HTML ultra simple en javascript] (https://jsfiddle.net/buksy/rxucg1gd/) – Buksy