Web サイトからページにロードする iframe があり、iframe のコンテンツの高さに基づいて動的にページの中央に位置を設定する必要があります。それを除いて、使用しているコードに問題はありませんでしたiframe のコンテンツの高さは、コンテンツが小さくなった場合 (それが理にかなっている場合) よりも低い値を返すことはありません。
js は、コンテンツの高さがいつ大きくなったかを認識しますが、縮小したときは認識しません。
たとえば、高さが 400 ピクセルのページがあり、一部のコンテンツが動的に 420 ピクセルに変更された場合、コードは高さが 420 ピクセルであることを認識しますが、たとえば、高さが 350 ピクセルに変更された場合でも、コードは依然として 420 ピクセルとして認識します。高い。これを修正するにはどうすればよいですか?
コード:
function place()
{
var w = $(window).width();
w-=1000;
w/=2;
if(w<12)
w = 12;
$("#div").css("left",""+w+"px");
$("#closeDiv").css("left",""+(w-12)+"px");
var h = $(window).height();
var ifh = document.getElementById("inner").contentWindow.document.body.scrollHeight;
document.title = ifh;
h -= ifh;
h /= 2;
if(h < 20)
h = 20;
$("#div").css("top",""+h+"px");
$("#div").css("height",""+ifh+"px");
$("#closeDiv").css("top",""+(h-12)+"px");
}
コンテンツがそれよりも小さいことがわかっている場合でも、ドキュメントのタイトルは引き続き 420px を示しています。にも同じ問題が発生し.offsetHeight
ます。
ご協力いただきありがとうございます!
ソリューションの更新
さて、問題を解決したとマークした回答のコードを使用しました。実際に使用したので、この問題の解決に貢献したことは称賛に値しますが、ここで発生した実際の問題は、iframe の高さでした。コンテナ ボックスの 100% に設定されます。99%に設定するとすぐに、問題は解決しました。理由はわかりません...でもねえ!
ご協力いただきありがとうございます。