[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)
})
```
という流れになっていそう。