태그는 여러 속성을 가질 수 있습니다. 코드에서 속성이 나타나는 순서는 중요하지 않습니다. 예를 들면 :
<a href="#" title="#">
<a title="#" href="#">
Javascript에서 HTML을 "정규화"하여 속성의 순서가 항상 동일하도록하려면 어떻게해야합니까? 항상 같은 순서라면 어떤 순서를 선택하든 상관 없습니다.
업데이트 : 나의 원래 목표는 약간의 차이가있는 2 개의 HTML 페이지를 (자바 스크립트에서) 쉽게 비교하는 것이 었습니다. 사용자가 다른 소프트웨어를 사용하여 코드를 편집 할 수 있기 때문에 속성의 순서가 변경 될 수 있습니다. 이것은 diff를 너무 장황하게 만듭니다.
답변 : 먼저 모든 답변에 감사드립니다. 그리고 예, 가능합니다. 내가 그것을 어떻게 관리했는지는 다음과 같습니다. 이것은 개념 증명이며 확실히 최적화 할 수 있습니다.
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 코드입니다.