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

[attribute] HTML - onstorage 속성 - 로컬스토리지 데이터 변경 시 실행 (= onstorage속성 = 온스토리지속성) ※ onstorage이벤트 = 온스토리지이벤트 ※ 변경전후(변경전/변경후) 값 표시

목차
  1. onstorage 예제 - 로컬스토리지 데이터 업데이트 시 실행
  2. onstorage 정의
  3. onstorage 구문

 

onstorage 예제 - 로컬스토리지 데이터 업데이트 시 실행

 

<script>

window.onstorage = function(e) {

  console.log(e.key + ' 값 변경됨: 변경 전' + e.oldValue +     ' 변경 후 ' + e.newValue + '.');

};

</script>

 


PS. 아래 방법도 가능.

 

<!DOCTYPE html>

<html>

<head>

<title>onstorage 이벤트 예제</title>

</head>

<body>

<h1>로컬 스토리지 객체 예제</h1>

<label for="hz-key">키:</label>

<input type="text" id="hz-key">

<label for="hz-value">값:</label>

<input type="text" id="hz-value">

<button onclick="setItem()">저장</button>


<script>

function setItem() {

  const key = document.getElementById('hz-key').value;

  const value = document.getElementById('hz-value').value;

  localStorage.setItem(key, value);

  window.postMessage({type: 'localStorageChanged', key, value}, '*');

}


window.addEventListener('message', function(event) {

  if (event.data.type === 'localStorageChanged') {

    console.log(`로컬 스토리지 데이터 변경됨. 변경된 키: ${event.data.key}, 변경된 값: ${event.data.value}`);

  }

}, false);

</script>

</body>

</html>


결과보기

 

onstorage 정의

 

로컬스토리지 데이터 변경 시 실행할 코드 지정.

 


 

1. onstorage 속성 사용 가능 태그 종류

  • JS window 객체에서만 사용 가능.

 

2.

  • 이벤트 핸들러는 로컬 스토리지 객체의 setItem(), removeItem(), clear() 등의 메서드를 사용하여 데이터를 변경할 때마다 실행.
  • onstorage 이벤트가 발생하면 현재 창/탭에서만 실행됨. (다른 창/탭에서 데이터 변경해도 이벤트 발생 안 함.) 
  • onstorage 이벤트가 크롬에서 작동하지 않는 문제가 발생할 수 있음. 이는 크롬 브라우저의 보안 정책 때문임. (즉, 크롬 브라우저에서는 동일한 출처 정책(Same-Origin Policy)에 따라 localStorage 객체의 변경 사항을 다른 창/탭에서 수신 불가함. 이로 인해 onstorage 이벤트가 작동하지 않을 수 있음. 대신, window.postMessage() 메소드 사용해 다른 창/탭과 통신 가능).
  • HTML5에서 사용 가능.

 

3.

지원 않는 최신 브라우저도 존재하므로, 크로스 브라우징 주의.

 

 

onstorage 구문

 

JS 방식 (3가지)

  • window.onstorage = ()=>{myScript};
  • window.onstorage = function(){myScript};
  • window.addEventListener("storage", myScript);



[속성값]

 

myScript

로컬스토리지 데이터 업데이트 시, 실행할 JS 코드

  • 주의: 함수명 사용 시, 다른 곳은 전부 소괄호까지 사용해 함수 호출하나 핑크색 myScript 자리는 "함수명만" 사용해 함수 호출.
  • 사용 방식 통일 권장.

 



분류 제목
form HTML - <input type="text"> 태그 - 1줄 텍스트 입력 (= 인풋텍스트타입/텍스트타입인풋…
attribute HTML - charset 속성 - 문자셋 지정 (= charset속성 = 차셋속성) ※ 문자인코딩, 언어셋
attribute HTML - onmousewheel 속성 - (폐기예고) 마우스휠 움직일 때 실행 (= onmousewhe…
attribute HTML - oninput 속성 ★ - 사용자 입력값 변경 시 바로 실행 (= oninput속성 = 온인풋속…
attribute HTML - onafterprint 속성 - 인쇄 대화상자 닫힌 이후 이벤트 발생 시 실행할 코드 정의 (=…
form HTML - <input type="url"> 태그 - http(s) 프로토콜 형식의 URL 주소 입력 (=…
attribute HTML - sizes 속성 - 해상도별 이미지나 아이콘, 미디어(오디오/비디오) 등의 크기 지정 (= si…
attribute HTML - shape 속성 - 이미지맵 링크영역 모양 지정 (= shape속성 = 쉐이프속성) ※ 에어리어…
attribute HTML - onload 속성 ★ - 지정 객체가 로드된 경우 실행 (= onload속성 = 온로드속성) ※…
attribute HTML - span 속성 ★ - 테이블 (열/열그룹) 병합 개수 지정 (= span속성 = 스팬속성) ※ …
form HTML - <input type="search"> 태그 - 검색어 입력 (= 인풋서치타입/서치타입인풋/서치…
form HTML - <input type="file"> 태그 - 업로드 할 파일 선택 (= 파일첨부/첨부파일 입력필…
form HTML - <input type="submit"> 태그 - 서버로 데이터 제출/전송 (= 인풋타입서브미트/…
attribute HTML - cite 속성 - (인용출처/삭제이유/삽입이유) 주소 연결 (= cite속성 = 사이트속성)
form HTML - <input type="reset"> 태그 - 입력창 초기화/재설정 (= 입력한 폼데이터 비우기…
attribute HTML - dir 속성 - 텍스트 출력방향 지정 (= dir속성 = 디르속성|디렉션속성)
attribute HTML - onended 속성 - 미디어 재생 끝날 때 실행 (= onended속성 = 온엔디드속성) ※ …
attribute HTML - translate 속성 - 요소 내용 번역 허용 여부 지정 (= translate속성 = 트랜슬…
attribute HTML - async 속성 ★★★ - 비동기적으로 외부스크립트 실행 지정 (= async속성 = 에이싱크속…
attribute HTML - novalidate 속성 - 폼데이터 제출 시, 유효성 평가 생략 (= novalidate속성 …
7/18
목록
찾아주셔서 감사합니다. Since 2012