FF14キャラジェネにpostMessageすると高さを返すようにした

タイトル出落ち。

このブログの右サイドバー(モバイル環境だとケツ)にも表示してる FFXIV キャラクター情報ジェネレーター は、他サイトに埋め込むときに iframe を使うことを想定している。
そもそもiframeはCSSがまともに効かないし、クロスオリジンだから直接高さを習得することができなかった。

旧ブログではハードコードしていい感じの高さにしていたけど、超ダサいからちゃんとpostMessageでやり取りできるようにした。
ジェネレーター側は onmessage

{
  ffxiv: {
    height: document.body.scrollHeight,
  },
}

のオブジェクトを返すので、

const widget = document.querySelector('#ffxiv_widget');
window.addEventListener('message', (event) => {
  if (event.data.ffxiv) {
    widget.style.height = `${event.data.ffxiv.height}px`;
  }
}, false);
widget.onload = () => {
  const cw = widget.contentWindow;
  cw.postMessage('', '*');
}

みたいな感じのを書いておくと、ジェネレーター読み込み時にいい感じの高さにしてくれる。