목차 일부
옮긴이의 글 ... xii
지은이의 글 ... xvi
감사의 말 ... xvii
1부 현대적인 자바스크립트 개요 ... 1
1장 현대적인 자바스크립트 프로그램 ... 3
1.1 객체지향 자바스크립트 ... 3
1.2 코드 테스트 ... 5
1.3 배포하기 위한 패키징 ... 6
1.4 무간섭(Unobtrusi...
더보기
목차 전체
옮긴이의 글 ... xii
지은이의 글 ... xvi
감사의 말 ... xvii
1부 현대적인 자바스크립트 개요 ... 1
1장 현대적인 자바스크립트 프로그램 ... 3
1.1 객체지향 자바스크립트 ... 3
1.2 코드 테스트 ... 5
1.3 배포하기 위한 패키징 ... 6
1.4 무간섭(Unobtrusive) DOM 스크립팅 ... 8
DOM(Document Object Model) ... 8
이벤트 ... 10
자바스크립트와 CSS ... 11
1.5 Ajax ... 11
1.6 브라우저 지원 ... 14
1.7 요약 ... 18
2부 전문적인 자바스크립트 개발 ... 19
2장 객체지향 자바스크립트 ... 21
2.1 언어 기능 ... 21
참조 ... 22
함수 오버로딩과 타입 검사 ... 24
유효범위 ... 28
클로저 ... 30
콘텍스트 ... 34
2.3 객체지향 기본 ... 36
객체 ... 36
객체 생성 ... 37
2.4 요약 ... 43
3장 재사용 가능한 코드 작성하기 ... 45
3.1 객체지향 코드의 표준화 ... 45
프로토타입 상속 ... 46
클래스 상속 ... 47
Base 라이브러리 ... 51
Prototype 라이브러리 ... 53
3.2 패키징 ... 57
네임스페이스 만들기 ... 57
코드 정리 ... 60
압축 ... 64
3.3 배포 ... 66
3.4 요약 ... 68
4장 디버깅과 테스트를 위한 도구 ... 69
4.1 디버깅 ... 69
에러 콘솔 ... 70
DOM 검사기 ... 75
파이어버그 ... 78
Venkman ... 79
4.2 테스트 ... 80
JSUnit ... 81
J3Unit ... 83
4.3 요약 ... 85
3부 무간섭 자바스크립트 ... 87
5장 문서 객체 모델 ... 89
5.1 문서 객체 모델에 대한 소개 ... 90
5.2 DOM 탐색하기 ... 90
DOM에서 공백 다루기 ... 90
간단한 DOM 탐색 ... 95
모든 HTML 엘리먼트에 직접 연결하기 ... 98
표준 DOM 메서드 ... 99
5.3 HTML DOM이 로딩되기를 기다리기 ... 101
페이지가 완전히 로딩되기를 기다리기 ... 102
대부분의 DOM이 로딩되기를 기다리기 ... 103
DOM이 완전히 불려오는 시점을 알아내기 ... 104
5.4 HTML 문서에서 엘리먼트 찾기 ... 106
클래스 이름으로 엘리먼트 찾기 ... 107
CSS 선택자를 기준으로 엘리먼트 찾기 ... 108
XPath ... 111
5.5 엘리먼트의 내용 얻기 ... 113
엘리먼트 내부의 텍스트 얻기 ... 113
엘리먼트 내부의 HTML 얻기 ... 116
5.6 엘리먼트 어트리뷰트 다루기 ... 117
어트리뷰트 값을 얻어내거나 설정하기 ... 118
5.7 DOM 변경하기 ... 121
DOM을 사용하여 노드를 생성하기 ... 122
DOM 안에 삽입하기 ... 123
DOM에 HTML 집어넣기 ... 125
DOM에서 노드 제거하기 ... 129
5.8 요약 ... 130
6장 이벤트 ... 131
6.1 자바스크립트 이벤트에 대한 소개 ... 132
비동기식 이벤트 vs. 스레드 ... 132
이벤트 단계 ... 135
6.2 공통적인 이벤트 기능들 ... 138
이벤트 객체 ... 138
this 키워드 ... 139
이벤트 버블 취소하기 ... 140
브라우저의 기본 동작을 덮어 쓰기 ... 142
6.3 이벤트 리스너 연결하기 ... 145
전통적인 연결 방법 ... 146
DOM 연결: W3C ... 148
DOM 연결: IE ... 149
addEvent와 removeEvent ... 150
6.4 이벤트의 종류 ... 153
6.5 무간섭 DOM 스크립팅 ... 155
자바스크립트가 비활성화된 상황을 고려하기 ... 156
링크가 자바스크립트에 의존하지 않게 하기 ... 156
CSS가 비활성화된 경우에 주의하기 ... 157
이벤트 접근성 ... 158
6.6 요약 ... 160
7장 자바스크립트와 CSS ... 161
7.1 스타일 정보에 접근하기 ... 161
7.2 동적인 엘리먼트 ... 164
엘리먼트의 위치 ... 164
엘리먼트의 크기 ... 173
엘리먼트의 가시성 ... 176
7.3 애니메이션 ... 178
슬라이드 인 ... 179
페이드 인 ... 179
7.4 브라우저 ... 180
마우스 위치 ... 181
뷰포트 ... 182
7.5 드래그 앤 드롭 ... 186
7.6 라이브러리 ... 191
moo.fx와 jQuery ... 192
script.aculo.us ... 193
7.7 요약 ... 196
8장 폼 기능 개선하기 ... 197
8.1 폼 검증 ... 197
필수 입력 필드 ... 200
패턴 매칭 ... 202
규칙 집합 ... 205
8.2 에러 메시지 출력 ... 207
검증 ... 207
검증 시점 ... 211
8.3 사용성 개선 ... 213
호버 레이블 ... 214
필수 입력 항목 표시 ... 216
8.4 요약 ... 218
9장 이미지 갤러리 만들기 ... 221
9.1 갤러리의 예 ... 221
Lightbox ... 222
ThickBox ... 224
9.2 갤러리 만들기 ... 225
무간섭적으로 로딩하기 ... 228
투명 오버레이 ... 230
배치된 박스 ... 232
열람 ... 236
슬라이드쇼 ... 238
9.3 요약 ... 242
4부 Ajax ... 243
10장 Ajax 소개 ... 245
10.1 Ajax 사용하기 ... 246
HTTP 요청 ... 246
HTTP 응답 ... 253
10.2 응답 데이터 처리하기 ... 257
10.3 완전한 Ajax 패키지 ... 258
10.4 다른 데이터의 사용 예 ... 261
XML 기반의 RSS 피드 ... 262
HTML 주입기(Injector) ... 263
JSON과 자바스크립트: 원격 실행 ... 264
10.5 요약 ... 265
11장 Ajax로 블로그 강화하기 ... 267
11.1 끝이 없는 블로그 ... 267
블로그 템플릿 ... 268
데이터 소스 ... 271
이벤트 탐지 ... 273
요청 ... 273
결과 ... 274
11.2 라이브 블로깅 ... 277
11.3 요약 ... 280
12장 자동 완성 검색 ... 283
12.1 자동 완성 검색의 예 ... 283
12.2 페이지 만들기 ... 286
12.3 키 입력 감시하기 ... 288
12.4 결과 받아오기 ... 292
12.5 결과 목록 탐색하기 ... 295
키보드 탐색 ... 295
마우스 탐색 ... 296
12.6 최종 결과 ... 297
12.7 요약 ... 302
13장 Ajax 위키 ... 303
13.1 위키? ... 303
13.2 데이터베이스와 대화하기 ... 304
13.3 Ajax 요청 ... 306
13.4 서버 측 코드 ... 307
요청 처리하기 ... 307
SQL 실행하고 서식화하기 ... 310
13.5 JSON 응답 처리하기 ... 312
13.6 또 다른 사례 연구: 자바스크립트 블로그 ... 315
13.7 애플리케이션 코드 ... 316
핵심 자바스크립트 코드 ... 316
자바스크립트 SQL 라이브러리 ... 320
루비로 작성한 서버 축 코드 ... 321
13.8 요약 ... 323
5부 자바스크립트의 미래 ... 325
14장 자바스크립트는 어디로 가고 있나 ... 327
14.1 자바스크립트 1.6과 1.7 ... 327
자바스크립트 1.6 ... 328
자바스크립트 1.7 ... 332
14.2 웹 애플리케이션 1.0 ... 335
시계 만들기 ... 336
간단한 행성 시물레이션 ... 340
14.3 Comet ... 343
14.4 요약 ... 346
6부 부록 ... 347
부록 A. DOM 레퍼런스 ... 349
A.1 참고 자료 ... 349
A.2 용어 ... 350
A.3 전역 변수 ... 352
document ... 353
HTMLElement ... 353
A.4 DOM 탐색 ... 354
body ... 354
childNodes ... 354
documentElement ... 355
firstChild ... 355
getElementById(elemID) ... 355
getElementsByTagName(tagName) ... 356
lastChild ... 356
nextSibling ... 357
parentNode ... 357
previousSibling ... 358
A.5 노드 정보 ... 358
innerText ... 359
nodeName ... 359
nodeType ... 360
nodeValue ... 360
A.6 어트리뷰트 ... 361
className ... 361
getAttribute(attrName) ... 362
removeAttribute(attrName) ... 363
setAttribute(attrName, attrValue) ... 363
A.7 DOM 변경 ... 364
appendChild(nodeToAppend) ... 364
cloneNode(true|false) ... 365
createElement(tagName) ... 365
createElementNS(namespace, tagName) ... 366
createTextNode(textString) ... 367
innerHTML ... 367
insertBefore(nodeToInsert, nodeToInsertBefore) ... 368
removeChild(nodeToRemove) ... 368
replaceChild(nodeToInsert, nodeToReplace) ... 369
부록 B 이벤트 레퍼런스 ... 371
B.1 참고 자료 ... 371
B.2 용어 ... 372
B.3 이벤트 객체 ... 373
일반 프로퍼티 ... 374
마우스 프로퍼티 ... 376
키보드 프로퍼티 ... 379
B.4 페이지 이벤트 ... 382
load ... 382
beforeunload ... 383
error ... 384
resize ... 384
scroll ... 385
unload ... 385
B.5 UI 이벤트 ... 386
focus ... 386
blur ... 386
B.6 마우스 이벤트 ... 386
click ... 386
dblclick ... 387
mousedown ... 387
mouseup ... 387
mousemove ... 387
mouseover ... 389
mouseout ... 389
B.7 키보드 이벤트 ... 390
keydown / keypress ... 390
keyup ... 390
B.8 폼 이벤트 ... 391
select ... 391
change ... 391
submit ... 392
reset ... 392
부록 C 브라우저 ... 395
C.1 최신 브라우저 ... 395
인터넷 익스플로러 ... 396
모질라 ... 396
사파리 ... 397
오페라 ... 397
찾아보기 ... 399
더보기 닫기