Tôi có thể định dạng/gọn gàng/làm đẹp HTML bằng JavaScript như thế nào? I have tried doing a search/replace for angle brackets (<
, >
) and indenting accordingly. Nhưng tất nhiên nó không tính đến khi JS hoặc CSS vv bên trong HTML.Cách định dạng/gọn gàng/làm đẹp trong JavaScript
Lý do tôi muốn làm điều này là tôi đã thực hiện một trình soạn thảo nội dung (CMS) có cả chế độ xem WYSIWYG và mã nguồn. Vấn đề mã được viết bởi trình soạn thảo WYSIWYG thường là một dòng duy nhất. Vì vậy, tôi muốn một JavaScript có thể định dạng hình ảnh này thành một dạng dễ đọc hơn theo yêu cầu.
Dưới đây là những gì tôi có cho đến nay:
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;
}
đôi khi các câu hỏi/câu trả lời hay nhất là ngoài chủ đề. – NilsB
@NilsB rác này là về chủ đề, trên thực tế nó đã được đóng lại như là chủ đề tắt và sau đó mở lại một lần nữa – Petah
[Đây là định dạng HTML cực kỳ đơn giản trong javascript] (https://jsfiddle.net/buksy/rxucg1gd/) – Buksy