자바스크립트의 定石
- 원서명DOM Scripting: Web Design with JavaScript and the Document Object Model, ppk on JavaScript
- 지은이제레미 키스, 피터 폴 콕
- 옮긴이윤석찬, 전정환, 정문식
- ISBN : 9788960770522
- 48,000원
- 2009년 08월 25일 펴냄 (절판)
- 페이퍼백 | 1,004쪽 | 188*235mm
- 시리즈 : 웹 프로페셔널
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
[ 세트 구성: 전2권 ]
1) 『DOM 스크립트: 다이내믹한 웹 표준 사이트를 위한』
2) 『PPK 자바스크립트: 뛰어난 웹 접근성의 실용 자바스크립트』
『DOM 스크립트』 소개
기존의 자바스크립트 책과는 완전히 다릅니다!
마크업에서 자바스크립트를 깨끗이 분리하고 핵심 기능은 그대로 살리면서도 다이내믹한 웹을 만들 수 있는 새로운 발상! 웹 디자이너와 웹 개발자가 함께 보는 웹 표준 준수 자바스크립트 필독서
웹 표준 기반의 멋진 DOM 스크립트 예제, 다이내믹한 웹사이트를 위한 고려 사항 등 한국어판 특별 부록 수록
『PPK 자바스크립트』 소개
8가지 실전 프로젝트로 모던하고 구조적인 실용 자바스크립트를 배우자. 브라우저 비호환성 처리, 웹 접근성, 스크립트 분리 등 기존 자바스크립트 책에서는 볼 수 없었던 새로운 내용이 가득 담겨있다. W3C DOM 브라우저 호환성 테이블로 유명한 웹 개발자의 바이블 quirksmode.org의 피터 폴 콕(일명 PPK)이 저술했다.
1) 『DOM 스크립트: 다이내믹한 웹 표준 사이트를 위한』
2) 『PPK 자바스크립트: 뛰어난 웹 접근성의 실용 자바스크립트』
『DOM 스크립트』 소개
기존의 자바스크립트 책과는 완전히 다릅니다!
마크업에서 자바스크립트를 깨끗이 분리하고 핵심 기능은 그대로 살리면서도 다이내믹한 웹을 만들 수 있는 새로운 발상! 웹 디자이너와 웹 개발자가 함께 보는 웹 표준 준수 자바스크립트 필독서
웹 표준 기반의 멋진 DOM 스크립트 예제, 다이내믹한 웹사이트를 위한 고려 사항 등 한국어판 특별 부록 수록
『PPK 자바스크립트』 소개
8가지 실전 프로젝트로 모던하고 구조적인 실용 자바스크립트를 배우자. 브라우저 비호환성 처리, 웹 접근성, 스크립트 분리 등 기존 자바스크립트 책에서는 볼 수 없었던 새로운 내용이 가득 담겨있다. W3C DOM 브라우저 호환성 테이블로 유명한 웹 개발자의 바이블 quirksmode.org의 피터 폴 콕(일명 PPK)이 저술했다.
목차
목차
- 『DOM 스크립트』
- 1장. 간단히 살펴보는 자바스크립트 역사
- 자바스크립트의 출현
- 문서 객체 모델(DOM)에 대해서
- 브라우저 업체 간 전쟁
- DHTML은 모호한 용어
- 브라우저 간 비호환 문제 발생
- 표준의 중요성 인식
- 다른 분야에서의 표준
- 브라우저 전쟁 종전 선언
- 웹 표준 시대의 개막
- 2장에서 다룰 내용
- 자바스크립트의 출현
- 2장. 자바스크립트 문법 익히기
- 코드 작성 전에 알아야 할 점
- 문법 공부
- 명령문
- 주석
- 변수
- 데이터 형식
- 문자열
- 숫자
- 불린 값
- 배열
- 결합형 배열
- 데이터 형식
- 연산자
- 산술 연산자
- 조건문
- 비교 연산자
- 논리 연산자
- 반복문
- while문
- do...while문
- for문
- while문
- 함수
- 변수 유효 영역
- 객체
- 네이티브 객체
- 호스트 객체
- 3장에서 다룰 내용
- 3장. 문서 객체 모델(DOM)이란?
- D는 문서입니다
- O는 객체입니다
- M은 모델입니다
- 노드
- 요소 노드
- 텍스트 노드
- 속성 노드
- CSS와의 관계
- getElementById
- getElementsByTagName
- 노드
- 속성 다루기
- getAttribute
- setAttribute
- 4장에서 다룰 내용
- 4장. 자바스크립트로 만드는 온라인 사진첩
- 마크업 코드 작성하기
- 자바스크립트 작성하기
- DOM 전환
- 함수 완성
- 자바스크립트 적용하기
- 이벤트 핸들러
- 함수 확장
- childNodes 프로퍼티
- nodeType 프로퍼티
- 마크업에 설명문 요소 추가
- 설명문을 자바스크립트로 바꾸기
- nodeValue 프로퍼티
- firstChild와 lastChild
- nodeValue로 설명 추가하기
- 5장에서 다룰 내용
- 5장. 꼭 알아야 할 핵심 기본기
- 자바스크립트에 대한 오해
- 문제점 많은 코드의 전파
- 플래시 사례
- 꼭 필요한지 철저히 검토하기
- 단계적 기능 축소
- javascript: 슈도 프로토콜
- 인라인 이벤트 핸들러
- 사용자 배려
- CSS 기술의 교훈
- 단계적 기능 향상
- 스크립트 분리
- 하위 호환성
- 브라우저 검사
- 6장에서 다룰 내용
- 자바스크립트에 대한 오해
- 6장. 사진첩 기능 개선하기
- 복습
- 단계적 기능 축소가 가능한가?
- 스크립트를 분리했는가?
- 이벤트 핸들러 추가
- 점검 사항
- 변수 지정하기
- 반복 구문 만들기
- 동작 변경
- 마무리
- 작업 나누기
- 이벤트 핸들러 추가
- 검증 코드 작성
- 미세 조정
- 키보드 접근법
- onkeypress 다시 보기
- CSS와 지시자 공유하기
- DOM 코어와 HTML-DOM
- 7장에서 다룰 내용
- 7장. 실행 시에 마크업 코드 생성하기
- document.write
- innerHTML
- 찬반 양론
- DOM 메소드
- createElement
- appendChild
- createTextNode
- 좀더 복잡한 조합
- 사진첩 다시 살펴보기
- insertBefore
- insertAfter 함수 만들기
- insertAfter 함수 사용
- 사진첩 마무리
- insertBefore
- 요약
- 8장에서 다룰 내용
- 8장. 의미가 살도록 컨텐츠 개선하기
- 하면 안 되는 것
- 속성을 화면에 표시하기
- 내용
- HTML이냐? XHTML이냐?
- 마크업
- CSS
- 자바스크립트
- 축약어 목록 표시
- displayAbbreviations 함수 만들기
- 마크업 생성
- 웹 브라우저 불발탄
- 인용구 표시
- displayCitations 함수 만들기
- 접근키 표시
- 마크업
- 자바스크립트
- 축약어 목록 표시
- 요약
- 9장에서 다룰 내용
- 9장. CSS와 DOM 연동하기
- 웹 문서의 세 가지 요소
- 구조
- 표현
- 동작
- 세 가지 요소 분리하기
- style 프로퍼티
- 스타일 가져오기
- 인라인 스타일만 동작
- 스타일 지정하기
- 스타일 가져오기
- DOM을 이용한 스타일 지정이 유용한 사례
- 특정 노드의 모양을 꾸밀 경우
- 반복되는 스타일일 경우
- 이벤트 처리 결과를 보여주는 경우
- className
- 함수 추상화
- 10장에서 다룰 내용
- 웹 문서의 세 가지 요소
- 10장. 애니메이션 슬라이드쇼 만들기
- 애니메이션이란?
- 위치
- 시간
- setTimeout
- 동작 바꾸기
- 재활용 함수 만들기
- 애니메이션 실전
- 요구 사항
- 해결 방법
- CSS
- 자바스크립트
- 변수 영역 문제 해결
- 부드럽게 만들기
- 마지막 손질
- 마크업 만들기
- 11장에서 다룰 내용
- 애니메이션이란?
- 11장. 총정리: 더블트랙 밴드 웹사이트 제작
- 소개
- 기본 초안
- 사이트 구조
- 웹 문서 구조
- 디자인
- CSS
- 색상
- 레이아웃
- 글꼴
- 마크업
- 자바스크립트
- 문서 하이라이트
- 슬라이드 쇼
- 내부 네비게이션
- 자바스크립트 사진첩
- 테이블 기능 향상
- 폼 기능 향상
- 레이블
- 기본 값
- 폼 유효성 확인
- 요약
- 12장에서 다룰 내용
- 소개
- 12장. DOM 스크립트의 미래
- 웹이란?
- 웹 브라우저
- 파이어폭스 등장
- 웹 디자이너
- 삼각 의자
- DOM 스크립트 태스크 포스
- 웹 브라우저
- Ajax
- XMLHttpRequest 객체
- Ajax 기반 서비스 예제
- Ajax에 대한 도전
- Ajax 기능 바르게 쓰기
- Hijax
- Ajax의 미래
- 웹 애플리케이션
- 마지막 부탁
- 웹이란?
- 부록 Ⅰ. 유용한 DOM 메소드와 프로퍼티
- 메소드
- 노드 만들기
- createElement
- createTextNode
- 노드 복사하기
- cloneNode
- 노드 추가
- appendChild
- insertBefore
- 노드 삭제
- removeChild
- 노드 바꾸기
- replaceChild
- 노드 값 변경
- setAttribute
- 노드 찾기
- getAttribute
- getElementById
- getElementsByTagName
- hasChildNodes
- 노드 만들기
- 프로퍼티
- 노드 프로퍼티
- nodeName
- nodeType
- nodeValue
- 노드 내부 구조 보기
- childNodes
- firstChild
- lastChild
- nextSibling
- parentNode
- previousSibling
- 노드 프로퍼티
- 메소드
- [한국어판 특별 부록]
- 부록 Ⅱ. 웹 표준 기반의 멋진 DOM 스크립트 예제 - 윤석찬
- Lightbox2, 슬라이드형 사진첩
- Sortable Table, 다이내믹 테이블 정렬 415
- 그 밖에 좋은 예제 찾아보기
- 롤 오버 이미지 기능
- 라운드 박스에서 불필요한 마크업 없애기
- DHTMLgoodies.com
- [한국어판 특별 부록]
- 부록 III. 다이내믹한 웹사이트를 위한 고려 사항 - 강규영
- 사용성
- 즉시 편집 UI
- 사용성은 디자이너가 고민해야 하는 것 아닐까?
- 뒤로가기 버튼과 즐겨찾기
- 협업을 위한 도구와 실천법
- 참고자료
- 『PPK 자바스크립트』
- 1장 역할
- 1.1 개념 잡기 2
- 브라우저에서 상호작용 다루기 2
- 팻 클라이언트와 씬 클라이언트 5
- 자바스크립트의 역할 7
- 1.2 기술 관점에서의 개요 8
- 표준화 9
- 버전 12
- 보안 14
- 1.3 자바스크립트의 역사 16
- 잘못된 출발 17
- 사실상의 표준 17
- 브라우저 전쟁 18
- CSS 표준준수운동 22
- 새 출발 23
- 다음엔 무엇이 올까? 25
- 1.1 개념 잡기 2
- 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
- 하드코딩된 링크는 href 속성이 있어야 한다 52
- 자바스크립트 사용자를 위한 내용 자동생성 53
- 사용자를 적당한 페이지로 리다이렉트하기 55
- 키보드 사용자 57
- noscript 태그 57
- 2.7 예제 스크립트 58
- 텍스트영역 최대값(Textarea Maxlength) 59
- 유저블 폼(Usable Forms) 60
- 폼 검증(Form Validation) 61
- 드롭다운 메뉴(Dropdown Menu) 61
- 스타일시트 편집(Edit Style Sheets) 62
- 샌드위치 선택기(Sandwich Picker) 62
- XMLHTTP 속도계(XMLHTTP Speed Meter) 65
- 사이트 설문(Site Survey) 66
- 2.1 CSS 표준준수운동 28
- 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
- 3.1 브라우저 68
- 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
- 4.1 HTML과 CSS 구조 106
- 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
- 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
- 5.1 기초 144
- 6장 브라우저 객체 모델(BOM)
- 6.1 window 객체 241
- 전역 객체로서의 window 241
- 새 페이지, 새 window 객체 242
- 새 전역 객체로서 동작하는 새 window 243
- window의 프로퍼티 246
- 6.2 윈도우 간 통신 248
- 팝업창 열기 249
- 다른 창을 가리키는 참조 만들기 250
- 통신채널 다시 만들기 251
- 팝업창 방지 프로그램 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
- 6.1 window 객체 241
- 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
- 7.1 브라우저 비호환성 284
- 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
- 8.1 개념 351
- 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
- 9.1 style 프로퍼티 420
- 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
- 10.1 요청 보내기 464