Теги можуть мати кілька атрибутів. Порядок появи атрибутів у коді не має значення. Наприклад:
<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);
}
}
});
Те ж саме для другого елементу диференціала, $('#different')
. Тепер $('#original').html()
і $('#different').html()
показати HTML код з атрибутами в тому ж порядку.