Tags können mehrere Attribute haben. Die Reihenfolge, in der Attribute im Code angezeigt werden, spielt keine Rolle. Beispielsweise:
<a href="#" title="#">
<a title="#" href="#">
Wie kann ich den HTML-Code in Javascript "normalisieren", damit die Reihenfolge der Attribute immer gleich ist? Es ist mir egal, welche Reihenfolge gewählt wird, solange es immer dieselbe ist.
UPDATE : Mein ursprüngliches Ziel war es, das Diff (in JavaScript) von 2 HTML-Seiten mit geringfügigen Unterschieden zu vereinfachen. Da Benutzer zum Bearbeiten des Codes unterschiedliche Software verwenden können, kann sich die Reihenfolge der Attribute ändern. Dies macht den Unterschied zu ausführlich.
ANTWORT : Nun, zuerst danke für alle Antworten. Und JA, es ist möglich. Hier ist, wie ich es geschafft habe. Dies ist ein Proof of Concept, der durchaus optimiert werden kann:
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);
}
}
});
Gleiches gilt für das zweite Element des Diff $('#different')
. Jetzt $('#original').html()
und $('#different').html()
zeigt HTML - Code mit Attributen in der gleichen Reihenfolge.