본문 바로가기
JAVA

'text/javascript'VS'application/javascript' 어떤것을 사용해야 하는가?

by helloissue 2021. 8. 24.

웹 유효성 심사결과의 경고문구( 'The type attribute is unnecessary for JavaScript resources.' )를 제거하기 위해 웹 표준 준수 가이드를 살피던 중  자바스크립트 선언부의 어떤 문제가 아닐까 하는 의문에 한번 조사해 보았습니다.

'application/javascript'이 표준이니 스크립트 선언부를 바꾸라고 하는데?  구글은 여전히 'text/javascript'를 사용하고 있는데 도대체 무엇이 표준이지? 둘 사이의 차이점을 알아보겠습니다.

 

<script language="javacript"></script>
<script type="text/javascript"></script>
<script ></script>

<script type="application/x-javascript"></script>
<script type="application/javacript"></script>


1. 포털 사들은 자바스크립트 선언 시 어떤 것을 사용할까?

 

아무리 표준이라고 하지만 적용 후 실제 동작 여부를 브라우저별로 전부 테스트할 수 없기에 신중을 기하려 구글은 현재 무엇을 사용하는지? 다른 포털사도 그러한지 알아보았습니다. 먼저 구글 메일을 찾았고 소스보기 후에 어떤 곳은 <script ></script>또 어떤 곳은 <script type="text/javascript"></script>을 즉 두 개를 번갈아 사용함을 확인합니다. 하지만 후자 'application/javascript'의 경우는 찾아볼 수 없었습니다. 다른 곳은 어떨까 해서 포털사 3 군대( 야후에도, 다음, 네이버)를 더 뒤져봤습니다. 구글과 같았습니다.

 

2. 그럼 표준이라고 말하는 'application/javascript'는 무엇일까?

 

'application/javascript'는 RFC4329에 세계 표준으로 기존의 자바스크립트 선언 대신 이렇게 선언하라고는 표준으로 제정했지만 , HTML5에서는 동작하지만  특정 브라우저에서 지원하지 않는 버그 등으로 인해 말뿐인 표준일 뿐이다. ie 8 이전은 동작을 못해서 고생했다 등의 개발자 후기를 찾아볼 수 있었습니다. 그럼에도 이것이 표준이고 추천한다는 글도 확인할 수 있었습니다. 그러나 구글에서조차도 지금 현재 사용하지 않는것을 보면 사실상 추천하지 않는다고 봐야 맞습니다.

 

3. 다른 스크립트 선언는 무엇인가?

 

<script language="javacript"></script>는 아주 초창기에 쓰였으나, 지금은 사용하지 않습니다.
<script ></script>의 경우는 브라우저 엔진에서 <script type="text/javascript"></script>으로 재번역해서 해석한다고 합니다.



마치면서 'application/javascript'의 경우는 국제표준이기 때문에 표준이지만 , 당신이 짠 모든 코드를 모든 브라우저에서 테스트의 시간이 많다면 추천한다. 그러나 모든 사용자를 고려해야 하는 범용적인 입장에서는, 나처럼 그냥 모두가 선택하는 안전빵을 선호하는 경우 'text/javascript' 사실상의 표준이라고 말할 수 있습니다.


 

참조:

https://stackoverflow.com/questions/9664282/difference-between-application-x-javascript-and-text-javascript-content-types

 

Difference between application/x-javascript and text/javascript content types

What is the difference between these headers? Content-Type: application/javascript Content-Type: application/x-javascript Content-Type: text/javascript Which one is best and why? Please do not say

stackoverflow.com

 

댓글