다음과 같이 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
'프로그래밍' 카테고리의 다른 글
spring util:map 사용 시 key와 value 타입 지정 (0) | 2014.05.17 |
---|---|
c:import 사용 시 주의사항 (Request method 'POST' not supported) (2) | 2014.05.16 |
Tiles definition 렌더링 전 처리 방법 (ViewPreparer 사용) (0) | 2014.04.30 |
HTTP request body copy 방법 (0) | 2014.04.29 |
Spring MappingJacksonJsonView modelKey가 하는 역할 (0) | 2014.03.15 |
JUnit private method test (0) | 2014.03.04 |
제너릭 메소드 (0) | 2014.03.01 |
JUnit 테스트 실행 시 src/test/resource 패키지의 설정 파일만 읽어 들일까? (3) | 2014.02.25 |