⚠️ このエントリーは1年以上前に作成されたものです。情報の賞味期限切れにご注意ください。
タイトル出落ち。
このブログの右サイドバー(モバイル環境だとケツ)にも表示してる FFXIV キャラクター情報ジェネレーター は、他サイトに埋め込むときに iframe
を使うことを想定している。
そもそもiframeはCSSがまともに効かないし、クロスオリジンだから直接高さを習得することができなかった。
旧ブログではハードコードしていい感じの高さにしていたけど、超ダサいからちゃんとpostMessageでやり取りできるようにした。
ジェネレーター側は onmessage
で
{
ffxiv: {
height: document.body.scrollHeight,
},
}
JavaScriptのオブジェクトを返すので、
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('', '*');
}
JavaScriptみたいな感じのを書いておくと、ジェネレーター読み込み時にいい感じの高さにしてくれる。