<script> 태그에 지정된 텍스트 / 자바 스크립트가 필요합니까?


157

나는 당신이 더 이상 스크립트 태그에 type="text/javascript"이상 CDATA하고 이상한 것을 필요로하지 않는 곳을 읽었습니다 <!--. 따라서 대신 :

<script type="text/javascript">
//<![CDATA[
<!--

    //your script here

-->
//]]>
</script>

당신은 단지 할 것입니다 :

<script>
    //your script here
</script>

나는 이것을 어디에서 읽었는지 기억할 수 없다. 그것은 내가 생각하는 Google 또는 Yahoo 엔지니어의 것이었고, 그들은 이러한 브라우저가 왜 고풍스러운 구성을 필요로했는지에 대해 언급했습니다. 누구든지이 블로그에 대해 어떤 블로그 게시물 / 기사에 대해 알고 있었는지, 또는 이에 대한 좋은 리소스를 가지고 있습니까?


새 브라우저의 경우, 이전 버전 (여전히 존재하는 경우)에는 <!-->가 필요합니다. 생략되지 않은 일부 앱의 유형에 대해서는 올바른 유형이 필요합니다.
— Bakudan

1
CDATA에 대해 읽어보기 : stackoverflow.com/questions/66837/…
— kapa

1
text/javascript지정된 파일을 열 때마다 제거합니다. 소음입니다.
— 머핀 맨

아주 관련 포스팅은 여기 허용 대답에서 HTML5 가이드 라인에 대한 최신 정보를 가지고.
— RBT

답변:


135

태그 에서 Crockford의 글을<script> 참조하십시오 .

<!-- //-->스크립트와 함께 핵을 사용하지 마십시오 . 이 스크립트는 1 세대 브라우저 Netscape 1 및 Mosaic에서 스크립트가 텍스트로 표시되지 않도록하기위한 것입니다. 수년 동안 필요하지 않았습니다. <!-- //-->HTML 주석을 표시해야합니다. 주석은 컴파일 및 실행이 아닌 무시되어야합니다. 또한 HTML 주석은 포함하지 않으므로 --감소하는 스크립트에는 HTML 오류가 있습니다.

...

type="text/javascript"

이 속성은 선택 사항입니다. Netscape 2부터 모든 브라우저의 기본 프로그래밍 언어는 JavaScript입니다. XHTML에서는이 속성이 필요하고 불필요합니다. HTML에서는 생략하는 것이 좋습니다. 브라우저는 수행 할 작업을 알고 있습니다.


75
필요 하고 불필요합니까? 뭔가 빠졌습니까?
— 이즈 카타

17
@Izkata, 유효성 검사에 필요하지만 아무런 영향을 미치지 않습니다.
— bdukes

14
지금은 "브라우저가해야 할 일을 알고 있습니다." 다음 주에 RubyScript (예를 들어 이것을 구성)가 대중화되고 모든 사람들이 바지를 긁어서 입양하면 어떨까요? 이것은 사람들이 파일 이름을 "_new"로 만들고 다른 사람들을 몇 년 동안 혼란스럽게 만드는 것과 같은 근시안적 사고입니다. "_new"입니까? 아니면 "_new_new"? 아니면 "_newer"? IMO 근시입니다.
— Slobaum

18
HTML5 사양 인 @Slobaum은 기본적으로 JavaScript로 지정되어 있습니다. 새로운 스크립트 유형이있는 경우 스펙에서 해당 기본값을 지원하는 새로운 브라우저 버전에서만 구현됩니다.
— bdukes

8
경우 RubyScript인기가된다, 그것은에 종료됩니다 .rbscript및 브라우저에 따라 동작합니다.
— Kirk Strobeck

45

그것은이다 크록 포드의 추천. 나는 그것이 다른 곳에서 울리는 것을 보았습니다. HTML5 사양에는 필요하지 않습니다.

이상하게도 "type"속성을 사용하여 평가하고 싶지 않은 블록 을 표시하는 것은 다소 당혹스러운 일 이되었습니다.<script>

<script type='text/html-template'>
  <div> this is a template </div>
</script>

Javascript가 아닌 이상한 유형을 제공하면 다른 JavaScript 코드 (아마도 평가할 수 있는 스크립트 블록에 있음)에서 사용할 수 있도록 원시 텍스트를 페이지에 넣을 수 있습니다.


나는 완전히 이해할 수 없다. 무엇을 type="text/html"의미 하는지, 무엇을 의미 하는지 설명하십시오 text/javascript. thanks
— T.Todua

4
@tazotodua "text / html"의 의미가별로 중요하지 않습니다. 중요한 것은 "텍스트 / 자바 스크립트" 가 아니며 브라우저는 <script>블록 의 내용을 완전히 무시한다는 것 입니다. 그러나이 <script> 됩니다 다른 자바 스크립트 코드를 발견하고 그 내용을 추출 할 수 있도록 DOM의 일부가됩니다.
— Pointy

흥미로운 해킹입니다. 그래도 내가 무엇을 사용할지 잘 모르겠습니다.
— brennanyoung

2
w3schools : In HTML5, the type attribute is no longer required for JavaScript. The default value is "application/javascript".
— 아민 Soheyli

19

HTML5에는 필요하지 않습니다 type="text/javascript"(기본값).

CDATA 스크립트에 HTML 문자 (예 : '<'및 '>')가 있으면 XHTML 페이지에만 필요합니다.

<!-- OLD 브라우저에만 필요합니다.


3

글쎄, 나는 text/javascript더 이상 아무도 사용 하지 않으며, 축소 도구조차도 아마도 그것을 제거 할 것이라고 말하고 싶어한다 ... 실제로 Facebook SDK 문서 는<script> .

그러나 Google SDK 설명서 에는 여전히가 text/javascript있습니다.

Amazon SDK 설명서 에는 여전히가 text/javascript있습니다.

Linkedin API 설명서 에는 여전히 text/javascript.

Instagram 은 여전히을 사용하고 text/javascript있습니다.


3

유형 속성은 스크립트 요소에 포함하거나 요소의 src 속성을 통해 참조 코드의 스크립트 언어를 식별합니다. 이것은 MIME 유형으로 지정됩니다. 지원되는 MIME 유형의 예로는 text / javascript, text / ecmascript, application / javascript 및 application / ecmascript가 있습니다.

에 따르면 HTML 4.01 사양

유형의 속성은 요소의 내용의 스크립트 언어를 지정하고 기본 스크립트 언어를 대체합니다. 스크립팅 언어는 컨텐츠 유형 (예 : "text / javascript")으로 지정됩니다. 작성자는이 속성에 값을 제공해야합니다. 이 속성에는 기본값이 없습니다.

그러나 HTML5 text/javascript 에서는 기본 유형이므로 생략 할 수 있습니다.

유형의 속성은 데이터의 스크립트 나 형식의 언어를 제공합니다. 속성이 존재하면 해당 값은 유효한 MIME 유형이어야합니다. 문자 세트 매개 변수를 지정하지 않아야합니다. 속성이없는 경우 사용되는 기본값은 "text / javascript"입니다.


1
즉, HTML5를 지원하지 않는 이전 브라우저에서는이를 생략하면 오류가 발생할 수 있습니다.
— Serge

2

HTML5가 아닌 브라우저는 텍스트 / 자바 스크립트를 거의 항상 추측 할지라도 여전히 스펙에 맞게 유형을 정의 할 것으로 기대하는 반면, HTML5에서는 스크립트가 기본적으로 텍스트 / 자바 스크립트로 기본 설정된다는 의존성 으로이 기사를 생각할 수 있습니다. .


1

그것은 속성이 script아니라 헤더를 기반으로 블록을 올바르게 해석하는 것은 브라우저에 달려 type있습니다. 따라서 귀하의 질문에 대답하기 위해 최신 브라우저에는 필요하지 않습니다 (IE7 +, FF, Webkit을 말하고 있습니다). 그보다 오래된 브라우저를 지원하는 경우 ... 죄송합니다 =)


2
3 억 8 천 5 백만 이상의 사용자가있는 중국을 잊지 마십시오. 그 중 다수는 여전히 IE6를 사용합니다. netmarketshare.com/...
— chainwork

3
중국의 엄격한 인터넷 정책을 알면 귀하의 사이트가 도달하지 못할 가능성이 있습니다 = P
— hellatan

문제는 인라인 스크립트에 관한 것이므로 기본 페이지 이외의 헤더는 없습니다 (일부 HTML 컨텐츠 유형 임). 어쨌든, 브라우저가 헤더를 고려한다는 소스를 가지고 있습니까 (예 : 일반 <script src = "something"> </ script>가 있고 VBScript 헤더를 제공 한 경우 VBScript로 해석하는 브라우저가 있습니까) ?
— Matthew Flaschen

1

당신은 스크립트 태그를 넣어하는 경우 SVG 안에 당신은 해야한다 type 속성을 지정합니다. 그리고 "text/ecmascript"오히려이어야 "text/javascript"합니다.

스크립트가 인라인 (링크되지 않음) 인 경우 스크립트 본문도 CDATA 선언으로 랩핑해야합니다. 따라서 SVG (및 기타 XML 변형)에 대한 인라인 스크립트 상용구 는

<script type="text/ecmascript">
<![CDATA[
// your javascript code goes here
]]>
</script>

이러한 경우는 '실제로'특수한 경우 일 수 있지만 실제로는 충분하며 SVG 사용이 증가하고 있으므로 다른 사람이 type 속성과 CDATA가 최신 브라우저에서 완전히 사용되지 않는다고 제안하는 것은 잘못입니다. 사용 사례는 좁지 만 아직 들어 본 적이 없습니다.

"환경을 반대 방향으로 바꾸면 모든 지혜가 어리 석음이됩니다." -애쉬 비


1
잘 했어 복잡한 SVG에서 작업 중이며 실제로는 그렇지 않습니다!
— Dave Everitt

1

👉🏻 HTML5 사양은 작성자가 중복 MIME 유형을 제공하지 않고 속성을 생략 할 것을 촉구합니다. MDN

MIME 스니핑 표준 자바 스크립트는 어떤 MIME 타입 (사용하여 제공 될 수 있습니다 다목적 인터넷 메일 확장 다음과 일치) :

<script type="application/javascript"></script>
<script type="application/ecmascript"></script>

<script type="text/javascript"></script>
<script type="text/ecmascript"></script>

0

글쎄, 텍스트 / 자바 스크립트없이 더 많은 예제를 계속 보았지만 어떤 이유로 든 내 스크립트가 FF에서 작동하지 않습니다. 텍스트 / 자바 스크립트 선언을 유지하는 것이 좋습니다. 브라우저가 자바 스크립트를 끈 경우 CDATA 태그를 사용하면 웹 사이트에서 자바 스크립트가 일반 텍스트로 표시되지 않습니다. 개인적으로 나는 그 태그를 더 이상 사용하지 않고 더 이상 사용자가 없다고 생각하지 않으며 거기에 있다면 두뇌를 키울 수 있습니다 : P


실제로 골동품 브라우저를 타겟팅하지 않는 한 type 속성이나 오래된 CDATA는 필요하지 않습니다. 그러나 실제로 올바른 유형을 사용하는 한 아무것도 아프지 않아야합니다.
— Pointy

가장 최근의 안정적인 FF 릴리스를 사용하고 있으며 텍스트 / 자바 스크립트를 선언하지 않고 구문 분석하는 데 문제가있는 것 같습니다 .jQuery btw를 사용하지만 차이가 없습니다.
— Michael

글쎄요 <script>, "언어"나 "타입"이 아닌 스크립트 태그로 전체 웹 애플리케이션을 실행 하고 모든 브라우저에서 제대로 작동합니다. (잘, 모든 합리적인 것 : FF, Chrome, Safari, IE, Opera)
— Pointy

1
@pointy는 FatherStorm이 왜 이런 일이 발생했는지에 대한 답변을 게시 한 것 같습니다. 귀하의 의견이 잘못된 것 같습니다.
— Michael

@Michael XHTML / Strict로 실수를 저지르면 문제가있을 수 있지만 의심 스럽습니다. JavaScript 유형의 조명 사이에는 "type"속성이 불필요하며, 잘못된 "type"이 스크립트를 손상 시키므로 버그의 원인 일 뿐이라는 일반적인 동의가 있습니다.
— Pointy

0

type="text/javascript" : HTML 4 및 XHTML에 필요하지만 HTML5에 선택적입니다.

CDATA : XHTML에 필요합니다.

<!--: 아주 오래된 브라우저에서 JavaScript를 숨기는 데 사용됩니다. 예 : Netscape 1과 Internet Explorer 2는 더 이상 사용하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.