스크립트 태그 내의 HTML 주석이 모범 사례입니까? [닫은]


97

다음 연습은 작업해야하는 인라인 JavaScript에서 매우 일반적입니다.

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

요점은 JavaScript와 호환되지 않는 브라우저가 소스를 렌더링하지 못하도록하는 것임을 알고 있지만 이것이 오늘날에도 여전히 모범 사례입니까? 오늘날 사용되는 대부분의 브라우저는 JavaScript를 해석 할 수 있습니다. 현대 모바일 장치조차도 일반적으로 문제가 없습니다.

'왜 안돼?' 질문 : 최근에 누군가가 일부 페이지 깊숙한 곳에 묻혀있는 스크립트 태그 끝에 '->'앞의 '//'를 생략 한 문제를 디버깅하는 데 몇 시간을 보냈는데 이로 인해 신비한 자바 스크립트가 발생했습니다. 오류.

너 뭐하니? 이것이 여전히 '모범 사례'로 간주됩니까?


답변:


118

중요한 것은 오늘날 특정 브라우저가 자바 스크립트를 지원하는지 여부는 관련이 없다는 것입니다 (분명히 대다수가 그렇습니다). 거의 모든 스크립트 블록을 이해 하기 때문에 관련성 이 없습니다. 그것을 해석하십시오.

Matt Kruse는 JavaScript Toolbox 사이트 에서 스크립트 블록 내에서 HTML 주석을 사용 하지 않는 이유 에 대해 약간 더 자세한 설명 을 제공합니다 .

해당 페이지에서 인용 :


스크립트 블록에서 HTML 주석을 사용하지 마십시오

자바 스크립트 (1995)의 고대 시대에 Netscape 1.0과 같은 일부 브라우저는 스크립트 태그에 대한 지원이나 지식이 없었습니다. 따라서 자바 스크립트가 처음 출시되었을 때 페이지에 텍스트로 표시되지 않도록 이전 브라우저에서 코드를 숨길 수있는 기술이 필요했습니다. '핵'은 스크립트 블록 내에서 HTML 주석을 사용하여 코드를 숨기는 것입니다.

스크립트에서 HTML 주석을 사용하는 것은 나쁘다

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

오늘날 일반적으로 사용되는 브라우저는 <script> 태그를 무시하지 않으므로 더 이상 자바 스크립트 소스를 숨길 필요가 없습니다. 실제로 다음과 같은 이유로 유해한 것으로 간주 될 수 있습니다.

  • XHTML 문서 내에서 소스는 실제로 모든 브라우저에서 숨겨지고 쓸모 없게 렌더링됩니다.
  • -HTML 주석 내에서 허용되지 않으므로 스크립트의 감소 작업은 유효하지 않습니다.

1
+1. 나는 comp.lang.javascript 시절에이 주제에 대한 많은 정보를 가지고있는 누군가가 있다는 것을 알고 있었고, Matt를 인용하면서 당신의 대답이 나타 났을 때 뉴스 그룹 아카이브를 숙독하고있었습니다.
Grant Wagner

1
XHTML에서는 HTML 주석 대신 CDATA를 사용할 수 있습니다. <script ...> // <! [CDATA [... //]]> </ script>
Concrete Gannet

이 '해킹'이 Internet Explorer 9에서 오류를 생성한다고 추가해야합니다 (클라이언트가 제대로 작동하지 않는 페이지에 대해 불평했고 이것이 원인이었습니다)
lordscales91

24

나는 그것을 중단했습니다. 언젠가는 NCSA Mosaic을 놓아 주면됩니다.


7
즉, OP가 중지해야하는 이유에 대한 제공된 이유가 없습니다 . 당신은 당신이 그랬기 때문에 그가 그것을 그만 두어야한다고 제안하고 있습니다. 이것은 IMO에 대한 대답이 될 충분한 이유가 아닙니다.
Lawrence Aiello 2015 년

1
@LawrenceAiello : "모범 사례"라는 문구가 "의견"이 아니라 "사실"을 생각하게 만드는 것은 어떻습니까?
혼돈

5
글쎄요,이 글 전체의 궁극적 인 결함이 있습니다. 토론 질문이기 때문에 닫혔어야합니다.
Lawrence Aiello 2015 년

1
아마도 이것이 6 년 전에 게시되었을 때 이것은 대답으로 자격이 있었지만 오늘날 사이트의 표준에 따르면 그렇지 않습니다.
j08691

1
이 답변에 논의되고 메타 SO
CubeJockey

10

당으로 W3C의 권고안 은 사용자 에이전트에서 스크립트 데이터를 숨길 주로 유용했다.

W3c 페이지 에서 인용 :

JavaScript에서 스크립트 주석 달기 JavaScript 엔진은 문자열 "<!--"이 SCRIPT 요소의 시작 부분에 나타날 수 있도록 허용 하고 줄 끝까지 추가 문자를 무시합니다. JavaScript는 "//"를 현재 줄의 끝까지 확장되는 주석의 시작으로 해석합니다. JavaScript 파서에서 "->"문자열을 숨기려면이 작업이 필요합니다.

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>

2
HTML 4.x를 사용하는 경우. XHTML과는 완전히 다른 이야기입니다.
Quentin

8

아니요, 스크립트 요소가 처음 도입되었을 때 사용 된 해결 방법으로 인한 숙취입니다. 오늘날 스크립트 요소를 이해하지 못하는 브라우저는 없습니다 ( "스크립팅이 꺼져 있거나 지원되지 않기 때문에 무시해야하는 스크립트"로 이해하더라도).

XHTML에서는 적극적으로 해 롭습니다.

나는 그것의 역사에 대해 얼마 전에 썼다 .


3

잠시 전에 사용을 중지했습니다. 또한 Douglas Crockford 에 따르면 대부분의 브라우저에서 사용할 수있는 유일한 스크립팅 언어는 JavaScript이기 때문에 스크립트 태그에서 type 속성삭제할 수 있습니다 .


1
대부분의 브라우저는 여전히 작동하지만 HTML 사양을 위반하므로 권장하지 않습니다.
Quentin

4
IE가 언제 VB 스크립트를 기본 유형으로 사용할지 모릅니다.
Francis

1

수동으로 입력하는 경우 항상 외부 js 파일을 사용하는 것이 좋습니다.

귀하의 우려 사항에 관하여 : 오늘날 대부분의 브라우저는 JavaScript 안전합니다. 그러나 때때로 사람들은 HTML을 직접 가져 오기 위해 간단한 파서를 작성할 수 있습니다. 안전한 따옴표는 이러한 클라이언트에게 정말 도움이됩니다. 또한 이전 Lynx와 같은 일부 비 JS 클라이언트는 이로부터 혜택을받습니다.


1

스크립트 태그 사이에 리터럴 텍스트를 포함하지 않으면 즉, src 파일에서 스크립트를로드하면 주석을 잊어 버릴 수 있습니다.



0

나는 오래 전에 그 일을 중단했습니다. 이 시대에는 정말 필요하지 않습니다.


@Yvette 내 답변을 게시 한 지 6 년 후에 그 댓글을 게시하게 된 동기는 무엇입니까?
John Topley

@Yvette 어떤 공격도 취하지 않았고, 나는 단지 호기심이 많았습니다. 그리고 물론 당신 말이 맞습니다. 요즘에는 댓글로 게시했을 것입니다.
John Topley

-1

나는 그것을하지 않지만 요 전에 나는 w3c에서 암호로 보호 된 사이트를 확인하기 위해 갔다. 그래서 직접 입력 방식을 사용해야했습니다. 그것은 내 자바 스크립트에 대해 불평했기 때문에 모든 것에 주석을 달았습니다.

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