본문 바로가기
프로그래밍

javascript self closing 문제

by 탁구치는 개발자 2014. 4. 16.

다음과 같이 self closing을 사용하여 외부 자바스크립트를 불러오게 되면 문제가 발생한다.

문제라 함은 브라우저에서 해당 외부 자바스크립트의 함수를 호출하지 못하는 것.

self closing이란 <script ... /> 와 같은 문법을 말한다. Start tag는 존재하지만 End tag는 존재하지 않는 것이다.


여하튼 개발을 하다 이와 같은 문제를 겪게 되었고 왜 브라우저가 정상적으로 자바스크립트를 로딩하지 못하는지에 대해서 확인을 해보았다.


self closing 은 원래 XHTML 에서 사용하는 문법이라고 하며 다음과 같이 엘리먼트를 꼭 slash를 이용하여 self-closing해야 한다고 적혀 있다.

XHTML requires that tags like <br/> and <img/> get an extra slash to make them self-closing.



HTML 4.01 스펙의 scripts를 확인해 보면 다음과 같이 적혀 있다.

http://www.w3.org/TR/html401/interact/scripts.html



결론은 스펙을 따르지 않았기 때문에 발생된 문제이다.

지금껏 HTML spec에 대해서 관심을 갖지 않았는데 이번 기회로 spec의 중요함을 깨닫게 되었다.


한 가지 더 얘기하고 싶은 것은 input 태그는 End tag가 forbidden이다. 지금껏 난 다음과 같이 self closing을 매번 input 엘리먼트에 붙여주며 개발을 했었다. ㅠㅠ

<input type="hidden" id="name" name="name"  />

http://www.w3.org/TR/html401/sgml/dtd.html#InputType