뭔가를 테스트하고 있었는데 이상한 버그가있었습니다 (실제로 버그인지는 모르겠습니다). IE 9 표준 모드 : normalize() 메서드가 작동하지 않습니다.
이 간단한 문서<!DOCTYPE html>
<html><head><meta charset="utf-8">
<script>
window.onload = function() {
var p = document.createElement('p');
p.appendChild(document.createTextNode('x'));
p.appendChild(document.createTextNode('y'));
p.appendChild(document.createTextNode('z'));
document.body.appendChild(p);
console.log(p.childNodes.length);
p.normalize();
console.log(p.childNodes.length);
};
</script></head><body></body></html>
모든 브라우저
하지만 IE 9 걸릴 콘솔 출력에서 다음 제 3 1이다 IE-9는 3 두 배 - normalize()
그런 의미 그것의 일을하지 않습니다. 더 놀라운 것은 "문서 모드"를 IE 7 또는 8 또는 심지어 버크 모드로 변경하면 콘솔 출력이 3과 1입니다.
IE에서이 버그가 있습니까?
- UPDATE가 - 요소가 DOM에 추가되지 않은 경우
이상하게도, IE 9는 올바른 방법으로 작동합니다. - UPDATE 다음
document.body.appendChild(p);
는 IE 9 콘솔은 또한 처음 3 다음 1.
를 표시합니다 그건 내가 본문에 단락을 추가 라인을 제거하는 경우, 위의 코드에서, 2 - 브라우저가 normalize()
않는 경우
간단한 스크립트는 제대로 여부를 확인합니다 :
var p = document.createElement('p');
// you can not put empty strings -- put blank strings instead
p.appendChild(document.createTextNode(' '));
p.appendChild(document.createTextNode(' '));
p.appendChild(document.createTextNode(' '));
var normalizeOk;
document.body.appendChild(p);
p.normalize();
normalizeOk = p.childNodes.length == 1;
document.body.removeChild(p);
console.log("normalize OK: ", normalizeOk);