[GitHub - bgstaal/multipleWindow3dScene: A quick example of how one can "synchronize" a 3d scene across multiple windows using three.js and localStorage](https://github.com/bgstaal/multipleWindow3dScene) localStorage を通じて、複数のWindow間で連携をとる仕組みのサンプル。 以下は GitHub を参考にして改変したもの。 ポイントとしては、`requestAnimationFrame` ごとの `render()` → `update()` 関数内で、 ```js const shape = { x: window.screenLeft, y: window.screenTop, w: window.innerWidth, h: window.innerHeight }; ``` のようにして画面上の Window 情報 (位置・サイズ) を取得。 現在の画面の位置情報と一部でも異なっている場合は、 1. オブジェクトにおける位置情報の更新 2. それに伴う関数の実行(描画時に参照される変数の更新) 3. `localStorage.setItem()` で Window 情報 (+ID等) を保存 4. [`localStorage` が変更されたときのイベント](https://developer.mozilla.org/ja/docs/Web/API/Window/storage_event) でこれを取得して諸々に反映する ```js addEventListener('storage', (event) => { // localStorage.setItem(key, value) の event.key //=> 第一引数 (key) event.newValue //=> 第二引数 (value) }) ``` という流れになっていそう。