• 회원가입
  • 로그인
  • 구글아이디로 로그인

[programming] HTML - <script> 태그 ★★ - JS코드입력 (= 동적기능언어입력 = script태그 = 스크립트태그)

목차
  1. <script> 예제 - JS코드 입력
  2. <script> 정의
  3. <script> 속성
  4. <script> 위치 - HTML 로드 후, JS 실행 권장

 

<script> 예제 - JS코드 입력


<p id="sinbi"></p>

<script>
document.getElementById("sinbi").innerHTML = "홈짱닷컴 (homzzang.com)";
</script>

의미: HTML 문서에서 sinbi 아이디 찾아, 그 안에 홈짱닷컴 (homzzang.com)이라는 글자 넣어 출력.

<script> 정의

 

클라이언트 브라우저에서 HTML 문서를 보다 동적이면서 상호작용하도록 만들어주는 역할 함.

 


 

1.

<script>는 서버쪽이 아닌 클라이언트쪽 브라우저에서 "자바스크립트" 같은 스크립트 정의할 때 사용.

2.

상단 예제처럼 <script>태그 안에 스크립트 내용을 직접 정의할 수도 있고, 
아래 예제처럼 js 확장자로 저장된 JS외부문서를 src 속성 이용해 호출 가능.
<script language="javascript" src="<?php echo G5_JS_URL."/rainbow.js">

3.

<script> 태그는 주로 이미지 조작,  폼 양식 유효성 검사, 콘텐츠의 동적 변화에 사용.

4.

<script> 태그 안에 src 속성이 존재할 경우, 
script 태그 안엔 javascript 외부 문서를 제외하고 아무 것도 없어야 함.


5. 
JS 지원 않는 클라이언트쪽 브라우저 고려해, 
<noscript> 태그 이용해 별도로 내용 기술 가능.

6. 

외부스크립트가 실행되는 방법 3가지 ★★★
1. async="async" : 페이지의 나머지 문서와 동시에 실행.
2. defer="defer" : 페이지 문서가 모두 뜬 후, 마지막에 실행.
3. 비정의 : 페이지 문서가 뜨기 전에 실행

7.
Type 속성 지정 필수 여부

HTML 4.01 : type 지정 필수
HTML5 : type 지정 선택. async 속성 새로 등장, xml:space 속성이 더 이상 지원 안됨.


8.

HTML과 XHTML에서 사용법 차이 (걍 참고용. 몰라도 됨. ㅡㅡ;;;;)

HTML

<script> 태그 안 스크립트 내용을 CDATA로 선언 (※ CDATA는 entities 의미를 분석하지 않음)

XHTML

<script> 태그 안 스크립트 내용을 #PCDATA로 선언 (※ #PCDATA는 entities 의미를 분석)
이것은 모든 특수문자는 암호화되야 하고 또한 모든 콘텐트는 CDATA 섹션으로 감싸져야 함을 의미.

<script type="text/javascript">
//<![CDATA[
var i = 10;
if (i < 5) {
  // some code
}
//]]>
</script>


9. 

JS 자세한 사용법은 JS 게시판 참고. 

 


<script> 속성

속성
속성값 쓰임새 비고
 async
 async  페이지의 나머지 문서와 동시에 출력. (외부 파일 방식)
 즉, JS 파일 다운 명령만 걸어두고, html 로드 진행함.
 
 charset ISO-8859-1
(라틴 알파벳용)

 UTF-8
 문자셋 (외부 파일 방식)  
 defer
 defer  페이지 문서가 모두 뜬 후, 마지막에 출력.
(외부 파일 방식)
 
 src
 URL 주소  js 확장자로 된 JS 내용 담은 외부 문서 
(외부 파일 방식)
 
 type  text/javascript (기본값)
 text/ecmascript
 application/ecmascript
 application/javascript
 스크립트의 미디어 타입을 지정  
xml:space
 preserve  코드에서 여백이 보존되어야 하는지 여부  HTML5 제외

※ 속성과 속성값이 동일하면 속성값을 따로 안 적어도 됨. 

 

<script> 위치 - HTML 로드 후, JS 실행 권장

방법1 - <head> 안에 <script> 태그 넣는 대신, <script> 태그에 async 속성 추가.

 

JS 파일 다운로드 명령만 실행 후, 계속해서 HTML 요소 로드 진행.

(즉, JS 파일 다운로드와 HTML 로드가 병렬적으로 진행됨.)

※ JS 파일 다운 속도와 HTML 로드 속도가 별 차이 없을 때 사용 권장.

 

장점: 방법2・3보다 JS 실행 속도가 더 빠름.

단점: HTML 로드 완료 전 JS 파일 실행 가능성 존재해, DOM 조작 시 에러 발생 가능.

 


방법2 - <head> 안에 <script> 태그 넣는 대신, <script> 태그에 defer 속성 추가. ★

 

JS 파일 다운로드 명령만 실행 후, 계속해서 HTML 요소 로드 진행.

(즉, JS 파일 다운로드와 HTML 로드가 병렬적으로 진행됨.)

※ JS 파일 다운 속도보다 HTML 로드 속도가 많이 느릴 때 사용 권장.

 

장점: 방법2보다 전체 로드 속도가 더 빠름.

단점: HTML 로드 완료 후 JS 파일 실행하므로, DOM 조작 시 에러 발생 없음.

 


방법3 - <script> 태그를 </body> 태그 앞에 위치. (비권장)

 

HTML 요소 로드 완료 후, 비로소 JS 파일 다운로드가 순차적으로 진행됨.

 

장점: HTML 로드 완료 후 JS 실행하므로 에러 가능성 줄어듦.

단점: 로드 시간이 아주 많이 지연됨.

 

PS. 엘리 님 (async・defer) 강의 https://youtu.be/tJieVCgGzhs

 

PS.

 

JS 강의

https://homzzang.com/b/js

 

mdn script 강의

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script (영어)

https://developer.mozilla.org/ko/docs/Web/HTML/Element/script (한국어)

 


 

방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
intro HTML - 준비물 + 추천링크 (※ 사용중지・사용폐기 태그) 2
intro HTML - 태그 문법 ★
basic HTML - <!DOCTYPE> 태그 ★ - 문서타입 (= !doctype태그 = !doctype요소 = …
basic HTML - <html> 태그 ★ - HTML문서 (= html태그/html요소 = 에이치티엠엘태그/에이치티…
basic HTML - <body> 태그 ★ - 문서영역 (= 문서본문영역 = body태그/body요소 = 바디태그/바…
font HTML - <h1> ~ <h6> 태그 ★ - 문단제목글씨크기 (= 표제태그 = 단락제목글자크기 = h1태그…
basic HTML - <p> 태그 ★ - 글단락 (= 글문단 = p태그/p요소 = 피태그/피요소)
basic HTML - <br> 태그 ★ - 줄바꿈 (=br태그/br요소 = 비알태그/비알요소) ※ 한줄아래로 줄바꿈 …
basic HTML - <hr> 태그 - 주제 다른 문단구분선 (= hr태그 = hr요소 = 가로선 = 수평선 = 에이…
basic HTML - <!--주석 내용--> 태그 ★ - 주석 처리 ※ 스크립트 태그 안 주석 의미
intro HTML - IE조건부주석 ★ (= 익스주석태그 = 익스플로러 조건문)
formatting HTML - <acronym> 태그 - 두문자어 (= acronym태그 = acronym요소 = 애크로님태그…
formatting HTML - <abbr> 태그 - 축약어/두문자어 (= abbr태그 = abbr요소 = 어브르태그 = 어브리…
formatting HTML - <address> 태그 - 연락처 (= address태그 = address요소 = 어드레스태그)
font HTML - <b> 태그 ★ - 굵은글씨 (= b태그 = 비태그) ※ 볼드태그 / bold태그 / 글씨 긁…
formatting HTML - <bdo> 태그 - 텍스트출력방향 (= bdo태그 = bdo요소 = 글자방향 = 브도태그 = …
1/18
목록
찾아주셔서 감사합니다. Since 2012