Теги могут иметь несколько атрибутов. Порядок, в котором атрибуты появляются в коде, не имеет значения. Например:
<a href="#" title="#">
<a title="#" href="#">
Как я могу "нормализовать" HTML в Javascript, чтобы порядок атрибутов всегда был одинаковым? Мне все равно, какой порядок выбран, если он всегда один и тот же.
ОБНОВЛЕНИЕ : моя первоначальная цель состояла в том, чтобы облегчить преобразование (в JavaScript) 2 HTML-страниц с небольшими различиями. Поскольку пользователи могут использовать различное программное обеспечение для редактирования кода, порядок атрибутов может измениться. Это делает различия слишком многословными.
ОТВЕТ : Ну, во-первых, спасибо за все ответы. И ДА, это возможно. Вот как мне удалось это сделать. Это подтверждение концепции, ее можно оптимизировать:
function sort_attributes(a, b) {
if( a.name == b.name) {
return 0;
}
return (a.name < b.name) ? -1 : 1;
}
$("#original").find('*').each(function() {
if (this.attributes.length > 1) {
var attributes = this.attributes;
var list = [];
for(var i =0; i < attributes.length; i++) {
list.push(attributes[i]);
}
list.sort(sort_attributes);
for(var i = 0; i < list.length; i++) {
this.removeAttribute(list[i].name, list[i].value);
}
for(var i = 0; i < list.length; i++) {
this.setAttribute(list[i].name, list[i].value);
}
}
});
То же самое для второго элемента diff, $('#different')
. Теперь $('#original').html()
и $('#different').html()
показывают HTML-код с атрибутами в том же порядке.