Localstorage에는 다른 페이지와 동기화하기 위해 구독 할 수있는 이벤트가 있습니다.
참고 : http://html5demos.com/storage-events
: 당신이 창 (A)에 키 값을 업데이트하는 경우, 이벤트가
하지이 창 A에서 트리거됩니다 그것은 윈도우 B 트리거됩니다 & C.
다음
는 데모입니다
이 페이지를 여러 탭으로 엽니 다. 입력 값을 변경하고 div에 반영되었는지 확인하십시오. 여기
는 자바 스크립트 코드입니다 :
var dataInput = document.getElementById('data'),
output = document.getElementById('fromEvent');
// handle updates to the storage-event-test key in other windows
addEvent(window, 'storage', function (event) {
if (event.key == 'storage-event-test') {
output.innerHTML = event.newValue;
}
});
// Update the storage-event-test key when the value on the input is changed
addEvent(dataInput, 'keyup', function() {
localStorage.setItem('storage-event-test', this.value);
});
마크 업 :
<div>
<p>Your test data: <input type="text" name="data" value="" placeholder="change me" id="data" /> <small>(this is only echoed on <em>other</em> windows)</small></p>
<p id="fromEvent">Waiting for data via <code>storage</code> event...</p>
</div>
5 사양 이벤트에 전달되는 모든 정보에 대해 설명 html로 :에서
[Constructor(DOMString type, optional StorageEventInit eventInitDict)]
interface StorageEvent : Event {
readonly attribute DOMString key;
readonly attribute DOMString? oldValue;
readonly attribute DOMString? newValue;
readonly attribute DOMString url;
readonly attribute Storage? storageArea;
};
dictionary StorageEventInit : EventInit {
DOMString key;
DOMString? oldValue;
DOMString? newValue;
DOMString url;
Storage? storageArea;
};
을 : http://www.w3.org/TR/webstorage/#the-storage-event
이 이벤트를 사용하면 로컬 저장소의 특정 키가 업데이트 될 때 다른 페이지가 반응하게 할 수 있습니다.
[postMessage] (https://developer.mozilla.org/en-US/docs/DOM/window.postMessage)를 보시기 바랍니다. –
@ FabrícioMatté 나는 탭이 필요하기 때문에 탭으로는 작동하지 않을 것이라고 생각합니다. 창에 대한 참조 : https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage#Syntax – edhedges