목차 일부
감사의 글 ... ⅳ
저자소개 ... ⅵ
옮긴이 소개 ... ⅶ
옮긴이의 말 ... ⅷ
들어가며 ... xxvi
1장 역할
1.1 개념 잡기 ... 2
브라우저에서 상호작용 다루기 ... 2
팻 클라이언트와 씬 클라이언트 ... 5
자바스크립트의 역할 ... 7
1.2 기술 관점에서의 개요 ... 8
표...
더보기
목차 전체
감사의 글 ... ⅳ
저자소개 ... ⅵ
옮긴이 소개 ... ⅶ
옮긴이의 말 ... ⅷ
들어가며 ... xxvi
1장 역할
1.1 개념 잡기 ... 2
브라우저에서 상호작용 다루기 ... 2
팻 클라이언트와 씬 클라이언트 ... 5
자바스크립트의 역할 ... 7
1.2 기술 관점에서의 개요 ... 8
표준화 ... 9
버전 ... 12
보안 ... 14
1.3 자바스크립트의 역사 ... 16
잘못된 출발 ... 17
사실상의 표준 ... 17
브라우저 전쟁 ... 18
CSS 표준준수운동 ... 22
새 출발 ... 23
다음엔 무엇이 올까? ... 25
2장 자바스크립트가 쓰이는 곳
2.1 CSS 표준준수운동 ... 28
눈에 띄지 않는 스크립트 ... 29
세 개의 계층 ... 30
관심의 분리 ... 32
2.2 표현과 구조의 분리 ... 33
CSS 수정 ... 33
구조를 변경할 것인가 표현을 변경할 것인가? ... 34
2.3 동작과 구조의 분리 ... 36
함수를 다른 파일로 분리 ... 36
HTML에서 이벤트 핸들러의 제거 ... 37
2.4 동작과 표현의 분리 ... 39
드롭다운 메뉴 - :hover를 쓸 것인가 mouseover/out을 쓸 것인가? ... 39
똑같은 효과와 비슷한 효과 ... 42
2.5 접근성에 대한 개괄 ... 45
접근성이란 무엇인가? ... 45
스크립트가 지원되지 않을 때도 ... 45
마우스가 없을 때도 ... 46
스크린리더 ... 47
접근성과 사용성 ... 50
2.6 접근성 규칙 ... 52
논리적인 HTML ... 52
자바스크립트 사용자를 위한 내용 자동생성 ... 53
사용자를 적당한 페이지로 리다이렉트하기 ... 55
키보드 사용자 ... 57
〈noscript〉 태그 ... 57
2.7 예제 스크립트 ... 58
텍스트영역 최대값 ... 59
유저블 폼 ... 60
폼 검증 ... 61
드롭다운 메뉴 ... 61
스타일시트 편집 ... 62
샌드위치 선택기 ... 62
XMLHTTP 속도계 ... 65
사이트 설문 ... 66
3장 브라우저
3.1 브라우저 ... 68
모질라 패밀리 ... 68
윈도우 익스플로러 ... 69
사파리 ... 70
오페라 ... 70
그 밖의 그래픽 데스크톱 브라우저 ... 70
모바일 폰 ... 71
스크린리더 ... 72
3.2 비호환성 ... 73
문제 ... 73
해결책 ... 75
3.3 객체 탐지 ... 79
객체 탐지 작동원리 ... 79
얼마나 멀리 가야 하나? ... 82
3.4 브라우저 탐지 ... 83
브라우저 탐지가 제대로 되지 않는 이유 ... 84
브라우저 탐지 경쟁 ... 85
브라우저 문자열 풀어보기 ... 87
브라우저 탐지의 올바른 사용 ... 92
3.5 디버깅 ... 93
오류 메시지 ... 93
브라우저 버그 ... 97
예제 ... 100
브라우저 버그 리포팅 ... 103
4장 준비
4.1 HTML과 CSS 구조 ... 106
HTML 구조 ... 106
CSS 구조 ... 107
4.2 훅 ... 108
아이디 ... 109
클래스 ... 110
커스텀 속성 ... 112
이름/값 쌍 ... 113
4.3 페이지 준비 ... 116
이벤트 핸들러 설정 ... 116
방문객의 상태 결정 ... 117
참조 설정 ... 117
내용 생성 ... 118
관계 정의 ... 118
문서 구조 변경 ... 120
4.4 〈script〉 태그 ... 120
문법 ... 121
여러 개의 스크립트 파일 사용 ... 123
4.5 초기화 ... 124
load 이벤트 ... 125
여러 번의 초기화 ... 126
눈에 띄지 않는 초기화 ... 127
load 이벤트 기다리기 ... 127
가장 좋은 방법? ... 129
4.6 예제 스크립트 ... 129
텍스트영역 최대값 ... 129
유저블 폼 ... 130
폼 검증 ... 132
드롭다운 메뉴 ... 134
스타일시트 편집 ... 135
샌드위치 선택기 ... 136
XMLHTTP 속도계 ... 138
사이트 설문 ... 139
세부사항 결정 ... 140
5장 코어
5.1 기초 ... 144
대소문자 구별 ... 144
문장과 세미콜론 ... 144
주석 ... 146
코드 블록: {} ... 147
연산자 ... 149
값 ... 151
5.2 데이터 타입 ... 152
여섯 가지 데이터 타입 ... 152
데이터 타입 변환 ... 156
+ 문제 ... 158
불리언 값으로의 변환 ... 160
명시적 데이터 타입 변환 ... 160
5.3 일반 연산자 ... 161
산술 연산자 ... 161
++와 -- ... 162
=, ==, === ... 163
!=, <, >, <=, >= ... 165
조건 연산자?: ... 167
5.4 변수 ... 168
변수 이름 ... 168
var 키워드 ... 169
변수 범위 ... 170
5.5 숫자로 작업하기 ... 172
8진수와 16진수 ... 173
Math 객체 ... 174
toFixed() ... 176
parseInt()와 parseFloat() ... 177
5.6 문자열로 작업하기 ... 177
인용부호 ... 177
접합: + ... 179
문자열 객체 ... 179
5.7 불리언 값 ... 185
불리언 변수 ... 185
불리언 연산자 ... 186
객체의 존재 테스트 ... 188
불리언 연산자의 고급 사용법 ... 189
5.8 제어 구조 ... 192
if 문장 ... 192
switch ... 197
for, while, do/while ... 201
break와 continue ... 207
try/catch ... 209
5.9 함수 ... 210
기본 함수 문법 ... 210
인자 ... 212
return ... 212
값으로서의 함수 ... 215
포함된 함수와 변수 범위 ... 217
5.10 객체 ... 219
도트 ... 221
객체의 정의 ... 221
메소드와 프로퍼티로 작업하기 ... 223
this 키워드 ... 226
전역 객체 ... 227
5.11 연관 배열 ... 227
각괄호 표기법과 도트 표기법 ... 229
연관 배열 ... 230
for in 문장 ... 231
5.12 배열 ... 233
다차원 배열 ... 233
배열 표기법 ... 234
배열의 사용 ... 235
length ... 236
push, pop, shift, unshift ... 237
6장 브라우저 객체 모델(BOM)
6.1 window 객체 ... 241
전역 객체로서의 window ... 241
새 페이지, 새 window 객체 ... 242
새 전역 객체로서 동작하는 새 window ... 243
window의 프로퍼티 ... 246
6.2 윈도우 간 통신 ... 248
팝업창 열기 ... 249
다른 창을 가리키는 참조 만들기 ... 250
통신채널 다시 만들기 ... 251
창닫기 ... 257
팝업차단기 ... 257
6.3 내비게이션 ... 259
location 객체 ... 259
history 객체 ... 261
6.4 창 위치 알아내기 ... 262
screen 객체 ... 262
창의 크기 ... 263
창 이동, 크기 조정, 스크롤 ... 263
포커스 주기와 포커스 뺏기 ... 264
6.5 기타 ... 265
navigator 객체 ... 265
alert, confirm, prompt ... 265
타임아웃과 인터벌 ... 267
6.6 document 객체 ... 269
lastModified ... 269
referrer ... 270
domain ... 270
write() ... 270
open()과 close() ... 272
6.7 쿠키 ... 274
이름/값 ... 275
만료날짜 ... 276
도메인과 경로 ... 276
쿠키 설정 ... 277
document.cookie ... 278
쿠키 읽기 ... 278
쿠키 지우기 ... 279
쿠키의 사용 예 ... 279
사용자 쿠키 설정 ... 281
쿠키 지원 여부의 확인 ... 281
7장 이벤트
7.1 브라우저 비호환성 ... 284
상황별 해결법 ... 285
개요 ... 285
7.2 이벤트 ... 286
마우스 이벤트 ... 286
키보드 이벤트 ... 290
인터페이스 이벤트 ... 291
W3C 이벤트 ... 295
마이크로소프트 이벤트 ... 296
기본동작 ... 296
이벤트 시뮬레이션 ... 299
7.3 이벤트 핸들러 등록 ... 300
인라인 이벤트 핸들러 ... 300
전통 모델 ... 301
W3C와 마이크로소프트 모델 ... 305
최선의 방법 ... 309
7.4 이벤트 버블링과 캡처링 ... 310
W3C 모델 ... 311
전통 모델과 마이크로소프트 모델 ... 313
이벤트 버블링의 실제 사용 예 ... 313
7.5 이벤트 객체와 그 프로퍼티 ... 316
이벤트 객체 ... 316
타입 ... 317
타깃팅 ... 317
마우스 위치 ... 318
마우스 버튼 ... 322
키 프로퍼티 ... 323
7.6 타깃팅 ... 323
차이점 ... 323
this ... 324
타깃 ... 327
this를 쓸 것인가 이벤트 타깃을 쓸 것인가? ... 331
7.7 예제 스크립트 ... 334
텍스트영역 최대값 ... 335
유저블 폼 ... 336
폼 검증 ... 337
드롭다운 메뉴 ... 338
스타일시트 편집 ... 340
샌드위치 선택기 ... 341
XMLHTTP 속도계 ... 342
사이트 설문 ... 342
7.8 드롭다운 메뉴, mouseout과 relatedTarget ... 343
mouseover ... 344
mouseout과 그 문제점 ... 345
해결책 ... 346
relatedTarget, fromElement, toElement ... 347
8장 문서 객체 모델(DOM)
8.1 개념 ... 351
노드 ... 351
가계도 ... 353
8.2 요소 찾기 ... 355
장거리 이동 ... 355
단거리 이동 ... 358
루트 노드 ... 362
8.3 노드 정보 ... 362
nodeName ... 362
nodeValue ... 363
nodeType ... 364
tagName ... 365
8.4 문서 트리 변경 ... 365
일반 규칙 ... 365
appendChild() ... 367
insertBefore() ... 368
removeChild() ... 370
replaceChild() ... 371
모든 자식 노드의 제거 ... 372
8.5 요소의 생성 및 복제 ... 373
createElement()와 createTextNode() ... 373
cloneNode() ... 376
테이블 및 폼 필드의 생성 ... 378
8.6 innerHTML ... 380
쓰레기가 들어가면 쓰레기가 나올 뿐 ... 381
속도 ... 382
예제 ... 383
innerHTML과 순수 DOM의 협동작업 ... 384
outerHTML, innerText, outerText ... 384
innerHTML과 DOM ... 386
8.7 속성 ... 388
속성 얻기와 설정하기 ... 389
HTML 속성과 자바스크립트 프로퍼티 ... 390
속성을 얻고 설정하는 최선의 방법 ... 393
8.8 텍스트 노드 ... 393
nodeValue ... 393
빈 텍스트 노드 ... 394
8.9 노드리스트 ... 398
위험 ... 400
도우미 배열 ... 402
8.10 폼과 레벨 0 DOM ... 403
레벨 0 DOM 노드리스트 ... 403
폼 필드 ... 405
8.11 DOM 하이퍼스페이스 ... 412
하이퍼스페이스에 요소 보관하기 ... 413
하이퍼스페이스와 innerHTML ... 416
요소는 하이퍼스페이스에? ... 416
8.12 마커 ... 417
9장 CSS 수정
9.1 style 프로퍼티 ... 420
대시 ... 422
단위 ... 422
스타일 얻기 ... 423
축약 스타일 ... 425
9.2 클래스와 아이디의 변경 ... 426
클래스 추가 ... 428
클래스 제거 ... 430
9.3 CSS를 페이지 안에 쓰기 ... 430
즉각적인 적용 ... 433
9.4 전체 스타일시트 변경 ... 434
이론 ... 435
document.styleSheets ... 435
cssRules[]와 rules[] ... 437
selectorText ... 438
style ... 438
cssText와 스타일시트 전송 ... 439
룰 삽입과 삭제 ... 441
9.5 비교 ... 443
예제 ... 444
9.6 요소 보여주기/숨기기 ... 445
간단한 보여주기/숨기기 스크립트 ... 446
테이블의 행 보여주기/숨기기 ... 448
9.7 애니메이션 ... 450
애니메이션 작동원리 ... 450
setTimeout과 setInterval ... 452
9.8 요소의 치수와 위치 ... 457
요소의 치수 ... 457
요소의 위치 ... 460
10장 데이터 전송
10.1 요청 보내기 ... 464
XMLHttpRequest 객체 ... 464
열기 ... 466
readystatechange ... 467
setRequestHeader ... 469
sendRequest 함수 ... 470
abort ... 472
10.2 응답 처리하기 ... 472
status ... 472
콜백 함수 ... 474
responseText와 responseXML ... 474
getResponseHeader ... 476
getAllResponseHeaders ... 476
10.3 응답 포맷 ... 476
XML ... 477
HTML ... 479
JSON ... 480
CSV ... 482
최선의 포맷은? ... 483
10.4 접근성 ... 483
HTML의 접근성 ... 484
기타 응답 포맷의 접근성 ... 487
마치며 ... 489
찾아보기 ... 491
더보기 닫기