JavaScript 코드 주위에 HTML 주석 태그를 사용하는 것이 여전히 관련이 있습니까?
내말은
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
답변:
HTML 주석, 즉. <!-- -->
, 더 이상 필요하지 않습니다. <script>
태그를 이해하지 못하는 브라우저가 정상적으로 저하 되도록하기위한 것 입니다. 이러한 브라우저, 예. Netscape 1.x는 더 이상 야생에서 찾을 수 없습니다. 따라서 더 이상 스크립트 태그에 HTML 주석을 넣을 필요가 없습니다.
HTML을 XHTML 또는 XML로 확인하려면 주석 처리 된 CDATA 태그를 사용할 수 있습니다.
<script type="text/javascript">
//<![CDATA[
document.write("Hello World!");
//]]>
</script>
그 이유는 그래서 당신의 <
, >
, &
, "
및 '
당신의 자바 스크립트 코드의 일부는 다음과 같이 인코딩 할 필요가 없습니다 <
, >
, &
, "
및 '
각각.
</script>
은 일반적으로 </scr
및으로 분해되는 동일한 문제를 가지고 ipt>
있습니다.
]]>]]<![CDATA[>
☺
<script>
내용을 올바르게 이해하고 있음 ) CDATA
기존 주석 위에있는 블록 의 큰 이점을 보지 못합니다 . 유일한 차이점은 여부입니다 <script>
... 우리가 아무 내용이없는 것으로 검색 엔진에 대한 할 수 있습니다 - 공식적으로 내용 또는하지 않은
본문에서 JavaScript를 모두 피하는 것이 좋습니다. 업데이트를 더 쉽게 만들고, 주석이 필요하지 않으며, JavaScript가 활성화 된 사용자뿐 아니라 JavaScript가 활성화되지 않은 사용자에 대해서도 계획을 세워야합니다.
.js
HTML 대신 파일에 모든 자바 스크립트 가 있으면 파일이 캐시 될 수 있으므로 업데이트하기가 더 어려워집니다.js
.
<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
당신이하는 방식이 아닙니다.
<!-는 자바 스크립트에서 //와 동일하게 취급되므로 코드는 다음과 같이 표시되어야합니다.
<script type="text/javascript">
<!--
document.write("Hello World!");
//-->
</script>
.. 당신과 다른 점은 스크립트 태그를 이해하지 못할 수있는 드물게 모호한 브라우저가 여는 // 화면을 인쇄한다는 것입니다. 이것은 주석 태그를 처음에 넣는 목적에 위배됩니다.
궁금하다면 여기에 대한 자세한 정보가 있습니다. http://www.javascripter.net/faq/comments.htm
그러나 결국에는 기본적으로 자바 스크립트를 지원하지 않는 매우 모호한 브라우저 (예 : HTMLLayout Browse 또는 Netsurf)조차도 스크립트 태그 사이에 텍스트를 렌더링하지 않는 것이 가장 좋다는 것을 알고 있으므로 더 이상 관련성이 없습니다. 그러나 관심을 가질 수있는 모든 브라우저는 <!-구문을 이해하므로 유효한 js이므로 다음 번에 추가하지 않는 것을 기억하십시오.
최신 브라우저에서도 유용 할 수 있습니다. 나는 실제로 내 html에 자바 스크립트가 포함되는 것을 피하고 싶었 기 때문에 오늘이 문제에 직면했습니다.
에서 제공되는 html 페이지가 http://host/variable_app_name/pagename
있는데, 여기서 variable_app_name
많은 값 (알다시피, 변수)을 가질 수 있습니다. 정적 파일에 액세스하려면와 같은 URL을 사용해야 http://host/static/variable_app_name/filename
하므로 먼저 브라우저의 위치를보고 variable_app_name
.
기본 javascript 파일에 연결하려면 다음을 수행합니다.
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
</script>
스크립트 태그는 자바 스크립트 문자열의 중간에서 종료되고 나머지 문자열은 다음과 같이 html로 해석되기 때문에 위의 코드는 최신 버전의 Chrome에서도 폭발 할 것입니다.
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js">
</script>
\n');
</script>
이 문제를 해결하는 방법은 여러 가지가 있지만 html 주석을 사용하는 것을 좋아합니다.
HTML 주석으로 :
<script type="text/javascript" >
<!--
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
-->
</script>
자바 스크립트 문자열 나누기 :
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n');
</script>
document.write를 사용하는 대신 스크립트 태그를 만들고 추가합니다.
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/static/'+variable_app_name+'/pagename.js';
document.head.appendChild(script);
</script>
간결한 변경이고 연결된 각 파일에 대해 복제하거나 생각할 필요가 없기 때문에 html 주석을 사용하는 것을 좋아합니다.