Session Storage - это идеальный способ связи между фреймами, принадлежащими одному домену. Официальные документы
Вы также можете привязать к событиям изменения хранилища.
В чистом JS вы можете просто сделать это ( JSFiddle здесь )
/* [Parent window] */
const writeToSessionEverySecond = function() {
var value = 10;
setInterval(function(){
value++;
sessionStorage.setItem('my_key', value);
}, 1000);
}
writeToSessionEverySecond();
/* [Child window] Listen storage change events */
window.addEventListener('storage', function() {
const valueFromSession = sessionStorage.getItem('my_key');
console.log('VALUE ' + valueFromSession)
}, false);
ПРИМЕЧАНИЕ: Чтобы действительно запустить событие, содержимое сеанса должно измениться. Если вы установите то же значение, событие не сработает.
Если вы используете RxJ, вы можете использовать наблюдаемые для создания простой, но мощной логики в потоках событий хранения, т.е.
Rx.Observable.fromEvent(window, 'storage').
.<rx operators to do your magic>()
.subscribe(..);
-Andrea