前提
HTMLでWebページを作成していて、iframeでヘッダー部分を埋め込んでいます。
画面サイズを変更するたびにiframeの高さと幅を自動調整できるようにJavascriptを記述していますが、意図通りに動作しません。
実現したいこと
Javascriptを利用して、画面サイズを変更するたびにiframeの高さと幅を画面幅に合わせて自動調整されるようにしたいです。
発生している問題・エラーメッセージ
最初にページを開いたときのiframeの幅と高さは、画面サイズに合わせて調整されて表示されるのですが、画面サイズを広げたり、縮めたりした際には、iframeのサイズが自動調整されません。
画面を再読み込みすると画面サイズに合わせて調整されます。
Javascriptに3か所console.log()を設置していますが、特にエラー無く表示はされています。
該当のソースコード
html
1<iframe id="headerifr" src="header.html" width="100%" height="auto" frameborder="0" scrolling="no" 2 marginheight="0" marginwidth="0"></iframe>
Javascript
1<script> 2 //headerifrが読み込まれたときに動作 3 document.getElementById('headerifr').onload =function(){ 4 resizeElement(); 5 }; 6 7 //画面幅変更のたびに動作 8 var resizeFlg; //setTimeoutの待機中かを判定するフラグ 9 function windowResizeFunc() { 10 //resizeFlgに値が設定されている場合は、待ち時間中なのでリセットする 11 if (resizeFlg !== false) { 12 clearTimeout(resizeFlg); 13 } 14 //300ms待機後にリサイズ処理を実施する 15 resizeFlg = setTimeout(function () { 16 resizeElement(); //リサイズを実施する処理 17 console.log("テストリサイズの中"); 18 }, 300); 19 }; 20 window.addEventListener("resize", windowResizeFunc); 21 console.log("テストリサイズの後ろ"); 22 23 function resizeElement() { 24 //要素を取得してから、幅と高さを取得 25 let headerifr = document.getElementById("headerifr"); 26 headerifr.style.width = headerifr.contentWindow.document.body.scrollWidth + "px"; 27 headerifr.style.height = headerifr.contentWindow.document.body.scrollHeight + "px"; 28 console.log(headerifr.contentWindow.document.body.scrollHeight); 29 }; 30 </script>
試したこと
Javascriptのコードの記述の順番や幅の取得方法を「.scrollWidth」ではなく「.clientWidth」で試したりしましたが、挙動は改善されませんでした。
Javascriptに詳しくなく、初歩的な原因なのかもしれませんが、アドバイスいただけますと幸いです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー