0

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%に設定するとすぐに、問題は解決しました。理由はわかりません...でもねえ!

ご協力いただきありがとうございます。

4

1 に答える 1

0

次のようなものを試してください:

var iHeight;
if ($("iframe").length > 0) iHeight = $($("iframe")[0].contentDocument || $("iframe")[0].contentWindow.document).height();

古き良き ele 呼び出しが機能するはずですが:

var iHeight;
if ($("iframe").length > 0) iHeight = $("iframe").height();
于 2012-11-15T21:16:52.887 に答える