모질라의 부분적인 document.all 지원 시작 컴퓨터

얼마 전 모질라에 document.all을 부분적으로 지원하는 패치가 등록되어, 7월 24일 이후의 빌드에 적용되었다. (여기를 참조) 버전 7의 오페라에서도 document.all 등의 MS DOM을 지원하기는 했지만, 지금까지 모질라의 방향이 W3C의 웹 표준 지원이었던 것으로 인식되었기 때문에 document.all의 지원에 대한 논란이 커지고 있다. 그리고 개인적으로는 모질라가 기존의 행보를 뒤집는 것 같아서 마음에 들지 않는다.

사실 위에도 부분이라고 적었듯이, 이번의 수정이 document.all의 완전한 지원을 의미하는 것은 아니다. 이번 수정의 내용을 요약하자면, 만약 스크립트에서 if(document.all)를 통해 IE인지 검사를 하지 않고 바로 document.all.id 형태의 구문을 이용할 경우 엘리먼트를 반환하지만, 그렇지 않고 검사를 할 경우 모질라는 예전과 마찬가지로 document.all를 이용한 엘리먼트의 접근을 허용하지 않고 오직 getElementById()만 이용할 수 있도록 한다. 이런 식으로 구현한 이유는 더 이상 관리되지 않거나, 관리자가 표준 지원에 대한 건의 사항을 무시하는 사이트를 이용할 때의 불편을 줄임과 동시에, 기존에 이용되던 브라우저 감지 코드를 최대한 그대로 이용할 수 있도록 하기 위해서라 한다. 물론 브라우저 검사를 저런 식으로 하지 않는 사이트가 많기는 하지만, 원칙은 그렇다.

여기서 잠깐 document.all에 대해 이야기하자면, document.all은 문서에 삽입된 엘리먼트에 이름을 통한 접근을 지원하기 위한 목적으로 쓰이는 키워드이며, 아직 W3C에서 DOM 표준을 발표하기 전인 1997년 익스플로러 4에 추가되었다. (DOM 1은 1998년 10월에 나왔다. 참고로 이전 버전의 넷스케이프와 익스플로러에서 쓰이던 것들은 DOM 0이라 불리며, W3C에서 발표한 것은 아니다.) DOM 1에는 엘리먼트 접근을 위한 목적으로 getElementById()가 포함되었으며, 1999년 발표된 익스플로러 5와 이후의 버전은 이 명령을 아무 문제 없이 지원한다. 최신 버전의 브라우저는 모두 이 명령을 지원하므로, 철두철미한 기존 브라우저 지원(그래봤자 IE4밖에 해당 안 되지만)을 생각하지 않는 한 굳이 document.all을 쓸 이유가 없다. 하지만 사람들은 길이가 짧아서 그런지 아니면 getElementById() 함수를 몰라서 그런지 여전히 document.all을 즐겨 이용한다.

(넷스케이프 4에서는 getElementById() 대신 document.layer를 이용하지만, 넷스케이프 6 이후 버전이나 이의 기반이 되는 모질라 및 그 자매들에서는 이를 지원하지 않고, 넷스케이프 4 버전도 이제는 거의 이용되지 않기 때문에 -익스플로러를 이용하지 않는 사람들은 거의 최신 버전으로 넘어왔으리라 생각된다- 이에 대해서 여기서 굳이 이야기할 필요는 없을 것 같다.)

document.all을 이용하는 사이트 이용시 자바스크립트 콘솔에 이렇게 표시된다

물론 document.all의 지원이 모질라의 활용성을 조금이나마 높일 것이라는 점은 부인하지 않는다. 모질라 측에서도 이의 지원이 일차적으로 기존의 잘못된 홈페이지의 지원을 강화하기 위한 것이며, 표준 확산 노력을 결코 게을리하지 않을 것이라 주장하고 있으며, 공식적인 입장은 아니지만 시장 점유율이 높아지면 그 때는 document.layer처럼 document.all도 더 이상 지원을 하지 않음으로써 표준 지원을 더욱 강화할 수도 있다고 한다. (개인적으로는 믿지 않는다.) 하지만 아무리 표준 확산에 최선을 다 한다 해도, document.all의 지원이 결과적으로 getElementById()의 이용을 다소라도 방해하리라는 것은 확실해 보인다. 쓸 필요가 줄어든 것이 확실하기 때문이다. 아마 말 안 듣던 개발자들도 이런 소식에는 귀가 번쩍 뜨일 것 같아서 불안하다.

게다가 아직 개발이 얼마 안 된 상태라서 내부적으로 문제가 있는 것인지, 아니면 페이지의 코드가 워낙 엉망이라 그런 것인지는 모르겠지만, 최신 빌드(7월 26일자)로 테스트한 결과 이 패치가 진정으로 쓸모있는 경우는 거의 없었다. 생각 외로 많은 사이트가 꼭 document.all을 쓰지 않고서도 잘 작동하거나 불편이 없기도 했고, 아니면 우회하는 길을 제공하는 경우가 많았다. (어쩌면 이용이 안 되는 페이지는 어지간해서는 처음부터 쓰지도 않았기 때문에 그렇게 생각되는지도 모르겠다.) 그리고 document.all을 이용하는 페이지에서도 document.all보다는 스크립트의 다른 문제로 인해 제대로 작동하지 않는 경우가 훨씬 많고, 이런저런 이유로 제작자가 의도하지 않은 대로 작동하는 경우가 많았다. 버그 보고에 올라온, 외국에서 테스트한 결과도 이와 비슷해서, 이로 인해 문제가 해결된 사이트는 별로 없었다. 한마디로, document.all 지원이 만능은 아니라는 것이다. 한번 책갈피에 저장된 사이트로 테스트를 해 볼 생각이지만, 결과가 그리 좋을 것 같지는 않다.

아무래도 모질라 앞에 놓인 길은 멀고도 험해 보인다. 하긴 대한민국을 먼저 생각해야 할 사람이 대한민국을 먼저 포기했다면 말 다 한 것 같지만.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://diferens.egloos.com/tb/185983 [도움말]

덧글

댓글 입력 영역