일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- isds
- 생성형AI
- 구글
- APEC
- 비급여진료가격
- 국민세정자문단
- 재량자금
- K-푸드
- 스마트농업관리사
- 재생에너지허브
- HTML5
- 자바스크립트
- 티스토리
- 일본어
- 함수
- K-뷰티
- 워드프레스
- 프론트엔드
- ai파운데이션
- 바이오헬스
- 모니터링
- 피지컬ai
- DOM
- WordPress
- 해양안전콘텐츠공모전
- 깃허브
- bom
- 접근성
- 보이스피싱
- 산업AI엑스포
- Today
- Total
공공기획 스튜디오 퍼블리크
웹프로그램을 통한 확장 API 활용 본문
1. Audio & Video File Control
1.1. Play
재생 메서드와 속성 | 내용 |
load() | |
play() | |
pause() | |
canPlayType() | 브라우저에서 미디어 파일 지원 여부 반환. Value = probably(높은 지원), maybe(지원 가능), ""(미지원) |
autoplay | |
controls | 플레이어 표시여부의 지정/반환 |
currentSrc | 미디어 url 반환 |
currentTime | 현재 재생위치를 초 단위로 지정/반환 |
defaultMuted | 기본 음소거 상태의 지정/반환 |
defaultPlaybackRate | 기본 재생속도 지정/반환 |
duration | 총 재생시간을 초 단위로 반환 |
ended | 재생이 종료되었는지를 반환 |
error | 오류상태를 error.code 값으로 반환 |
loop | 반복 재생여부의 지정/반환 |
muted | 음소거 여부의 지정/반환 |
paused | 일시정지 여부를 반환 |
playbackRate | 현재 재생속도를 지정/반환 |
preload | 이미지가 로드될 때 미디어 파일의 로드 여부를 지정/반환 |
src | 현재 파일의 경로 지정/반환 |
volume | 볼륨의 지정/반환 |
See the Pen public.re.kr/188-1-1-01 by Lee Deokho (@duqe) on CodePen.
1.2. Event
미디어 관련 이벤트 | 내용 |
abort | 미디어 파일의 로딩이 중지 되었을 때 |
canplay | 브라우저가 미디어 파일의 플레이를 시작할 수 있을 때 |
durationchange, duration | 속성이 변했을 때 |
ended | 재생이 종료되었을 때 |
error | 미디어 파일 로드 및 재생시 오류 |
loadstart | 미디어 파일 로드가 시작될 때 |
pause | 일시정지 되었을 때 |
play | 재생이 시작되었을 때 |
playing | 일시정지 또는 버퍼링으로 멈추었다 재생을 시작할 때 |
progress | 미디어 파일을 다운로드 하고 있을 때 지속적으로 발생 |
ratechange | 재생속도(defaultPlaybackRate, playbackRate 속성)가 변경되었을 때 |
seeked | 사용자가 미디어파일의 새로운 위치로 이동하거나 건너뜀을 마쳤을 때 |
seeking | 사용자가 미디어파일의 새로운 위치로 이동/건너뜀을 시작할 때 |
timeupdate | 현재 재생위치가 바뀌었을 때(재생 중 지속적으로 발생) |
volumechange | volume또는 muted 속성이 변경되었을 때 |
waiting | 다음 프레임 데이터를 버퍼링하기 위해 미디어가 멈추었을 때 |
See the Pen public.re.kr/188-1-2-01 by Lee Deokho (@duqe) on CodePen.
See the Pen public.re.kr/188-1-2-02 by Lee Deokho (@duqe) on CodePen.
2. Drag & Drop
2.1. 드래그 속성 지정
<img id="image" src="flower.jpg" width="150" draggable="true">
<p draggable="true">테스트텍스트</p>
2.2. 드래그 이벤트 처리
드래그앤드롭관련 이벤트 | 내용 |
dragstart | 드래그를 시작할 때 발생 - 전달할 데이터에 대한 저장(setData() 메서드) 필요 |
drag | 드래그 중에 계속 발생 |
dragend | 드래그를 종료했을 때 발생 |
dragenter | 드래그 요소가 다른 요소 범위 안에 들어올 때 발생 |
dragover | 드래그 요소가 다른 요소 위에서 드래그하고 있을 때 발생 - 기본적으로 요소 위에 다른 요소가 드롭될 수 없기 때문에 드롭을 허용하려면 기본값을 취소(preventDefault() 메서드)해야 함. |
dragleave | 드래그 요소가 다른 요소 범위를 벗어날 때 발생 |
drop | 드래그 요소를 드롭하였을 때 발생 - 전달하려는 데이터를 가져 (getData()메서드) 와서 드롭요소에 추가(appendChild()메서드)하는 작업 필요 |
<img id="image" src="flower.jpg" width="150" draggable="true" ondragstart="메서드명(event)">
<script>
function 메서드명(event) {
// 전달할 데이터에 대한 저장 필요
}
</script>
2.3. 전달 데이터 처리
dataTransfer 객체의 주요 메서드 | 내용 |
setData(type, data) | 드래그앤드롭을 위한 새로운 요소를 저장 - 드래그를 시작할 때 전달할 데이터를 보관 - type의 값: 단순문자열 "text", URL 문자열을 나타내는 "url" - data: 드래그되는 요소의 id |
getData(type) | 드롭할 때 setData()에서 저장한 요소와 데이터를 가져옴. |
clearData([type]) | 드래그앤드롭 중에 특정 포멧의 데이터를 삭제 |
setDragImage(이미지변수, x, y) | 드래그 도중에 표시할 사용자 이미지를 지정 |
See the Pen public.re.kr/188-2-3-01 by Lee Deokho (@duqe) on CodePen.
2.4. 드래그 포인터 변경
dataTransfer 갹체의 포인터관련 속성 & 메서드 | 내용 |
effectAllowed | 드래드 하는 동안 사용할 수 있는 효과 지정 - value: none, copy, copyLink, copyMove, link, linkMove, move, all, uninitialized - 드래그를 시작할 때 발생하는 dragstart 이벤트에서 사용 |
dropEffect | 드래그가 끝날 때 어떤 효과를 사용할 지 지정 - value: none, copy, link, move - 드롭할 때 발생하는 dragenter 또는 dragover 이벤트에서 사용 |
setDragImage() | 드래그할 때 마우스 커서 위에 표시되는 이미지 변경 |
See the Pen public.re.kr/188-2-4-01 by Lee Deokho (@duqe) on CodePen.
3. Web Storage
3.1. Opening
구분 | 로컬스토리지 | 세션스토리지 |
유효기간 | - 데이터의 저장기간에 제한이 없기때문에 사용자에 의한 명시적인 삭제 전까지 영구 보관 | - 데이터 저장기간 제한적 - 세션 생길 때 생성되고 세션이 종료되면 소멸 |
공유범위 | - 도메인(웹사이트) 당 별도의 저장 영역 생성 - 같은 도메인에 모든 윈도우(웹페이지)들은 스토리지에 접근가능 |
- 각 세션마다 별도의 저장영역 생성 - 같은 도메인이라도 다른 윈도우에서 생성되면 스토리지에 접근 불가 |
웹스토리지 관련 속성과 메서드 | 내용 |
length | 스토리지에 저장되어 있는 데이터의 개수를 반환 |
key(index) index | 위치에 저장된 데이터의 "키"를 반환 |
getItem(key) | key에 해당하는 데이터의 "값"을 반환 |
setItem(key, value) | (key, value) 쌍의 데이터를 스토리지에 저장 |
removeItem(key) | key에 대응하는 데이터를 삭제 |
clear() | 스토리지에 저장된 모든 데이터를 삭제 |
// 웹 브라우저의 웹스토리지 지원여부 확인
if (typeof(Storage) !== "undefined") {
로컬/세션 스토리지 지원
}
else {
로컬/세션 스토리지 미지원
}
if (window.localStorage) {
로컬 스토리지 지원
}
else {
세션 스토리지 지원
}
3.2. Operation
구분 | 문법 | 샘플 |
데이터 저장 | localStorage.setItem(key, value); | localStorage.setItem("HTML5", "2"); |
localStorage.key = value; | localStorage.HTML5 = "2"; | |
localStorage[key] = value; | localStorage["HTML5"] = "2"; | |
데이터 읽기 | localStorage.getItem(key) | let value = localStorage.getItem("HTML5)"; |
localStorage.key; | localStorage.HTML5; | |
localStorage[key]; | localStorage[HTML5]; | |
데이터 삭제 | localStorage.removeItem(key); | localStorage.removeItem("HTML5"); |
delete localStorage.key; | delete localStorage.HTML5; | |
delete localStorage[key]; | delete localStorage["HTML5"]; |
<h3>로컬 스토리지에서 모든 데이터 읽기</h3>
<textarea id="result" cols="45" rows="5"></textarea>
<script>
// 로컬스토리지에 저장
window.onload = function() {
if (wiindow.localStorage) {
localStorage.setItem("HTML5", "2");
localStorage.algorithms = "3";
localStorage["machine learning"] = "3";
}
}
// 로컬스토리지에서 읽기
if (window.localStorage) {
data = document.getElementById("result");
data.value = "";
for (i=0; i<localStorage.length; i++) {
let key = localStorage.key(i);
let value = localStorage.getItem(key);
data.value += "(" + key + "," + value + ")" + " ";
}
}
</script>
See the Pen public.re.kr/188-3-2-01 by Lee Deokho (@duqe) on CodePen.
See the Pen public.re.kr/188-3-2-02 by Lee Deokho (@duqe) on CodePen.
3.3. Event (of localStorage)
StorageEvent 객체의 속성 | 내용 |
key | 변화가 발생한 데이터의 key를 반환; clear()가 호출되면 null 반환 |
oldValue | 변화가 발생한 데이터의 이전 value 반환; clear() 호출이나 새로운 데이터 추가시 null 반환 |
newValue | 변화가 발생한 데이터의 새로운 value 반환; value 가 삭제된 경우 null 반환 |
url | 이벤트가 발생한 웹 문서의 url |
storageArea | 이벤트가 발생한 웹 스토리지 객체 |
See the Pen public.re.kr/188-3-3-01 by Lee Deokho (@duqe) on CodePen.
4. Position Information
4.0. Opening
위치정보 관련 메서드 | 내용 |
getCurrentPosition() | 현재 위치정보를 얻을 때 |
watchPosition() | 사용자의 위치가 변경될 때마다 업데이트 된 위치정보를 지속적으로 얻을 때 |
clearWatch() | watchPosition() 메서드의 동작을 종료 |
// 지오로케이션 API가 웹 브라우저에서 지원되는지 여부 판단
if (navigator.geolocation) {
위치 정보 얻기
}
else {
해당 브라우저는 위치정보를 미지원
}
4.1. 현재 위치정보
// getCurrentPosition() 사용방법
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options)
- successCallback: 위치 정보를 성공적으로 얻었을 때 호출되는 콜백 함수명
- errorCallback: (생략가능) 위치 파악 중 오류가 발생하였을 때 호출되는 콜백 함수명
- option: (생략가능) 선택사항을 객체 형식으로 전달
인자 | Position타입 객체 속성 | 내용 |
첫번째 | coords.latitude | 위도 |
coords.longitude | 경도 | |
coords.accuracy | 정확도(m) | |
coords.altitude | 고도(m) | |
coords.altitudeAccuracy | 고도정확도(m) | |
coords.heading | 아동중일 때 진행방향을 북쪽을 기준으로 시계방향의 각도로 표시 | |
coords.speed | 이동중일 때 속도를 m/s로 표시 | |
timestamp | 위치가 파악된 시간정보(1970.1.1부터 밀리초단위로 표시) | |
두번째 | code | 현재 오류를 나타내는 오류를 반환 - PERMISSION_DENIDE: 위치 정보에 대한 수집권한을 얻지 못함. - POSITION_ANAVAILABLE: 위치 정보를 얻지 못함. - TIMEOUT: 위치 정보를 얻는데 제한 시간을 초과한 경우 - UNKNOWN_ERROR: 알수없는 오류 |
message | 오류내용을 텍스트로 변환 | |
세번째 | enableHighAccuracy | true로 지정하면 정확도가 높은 위치정보를 얻도록 요청. 다만 반응속도 감소 우려 |
timeout | 위치 정보 파악에 대한 제한 시간을 설정(밀리초 단위) - 초과하면 TIMEOUT 오류발생 | |
maximumAge | 파악된 위치 정보의 유효시간을 설정 - 초과하면 해당정보를 폐기하고 새로운 정보의 파악을 시도하고, 0이면 항상 새로운 위치정보를 요청 |
See the Pen public.re.kr/188-4-1-01 by Lee Deokho (@duqe) on CodePen.
4.2. 연속적인 위치정보
// watchPosition() 사용방법
let 식별id = navigator.geolocation.watchPosition(successCallback, ErrorCallback, option);
navigator.geolocation.clearWatch(식별id);
See the Pen public.re.kr/188-4-2-01 by Lee Deokho (@duqe) on CodePen.
4.3. 지도서비스
See the Pen public.re.kr/188-4-3-01 by Lee Deokho (@duqe) on CodePen.
[참고자료]
- 이관용, HTML5 웹 프로그래밍, KNOU Press, 2023.
'Reference' 카테고리의 다른 글
마크다운 문법이라고 할 것 까지 필요없는 문법 요약 (0) | 2025.08.22 |
---|---|
HTML/CSS/JS 개발환경에서의 함수 등 명명에 관한 통상의 규칙 (0) | 2025.08.20 |
웹에서도 일러스트레이터 부럽지 않은 html5 요소 (1) | 2025.08.16 |
웹 브라우저 및 페이지 제어를 위한 인터페이스 (0) | 2025.08.05 |
최신 ICT 시사상식 2023 (0) | 2025.06.24 |