Avatar billede danielss Nybegynder
07. november 2007 - 19:13 Der er 3 kommentarer og
1 løsning

Iframe højde = iframe source højde

Hej

Jeg har en Iframe på min side, som jeg godt vil have til at være samme højde som indholdet er iframen, sådan så man ikke behøver noge scrollbars.
Jeg har fundet dette:

height = ifrm.document.getElementById("ifrm_content").offsetHeight;

Det virker perfekt Firefox, men i IE virker det kun nogle gang.. måske 3 ud af 10 gange.

Nogle der kender en funktion der virker? eller ved hvorfor denne kun virker nogle gange?
Avatar billede w13 Novice
07. november 2007 - 21:01 #1
Jeg tror, det er fordi den køres inden indholdet er loadet rigtigt de sidste 7 gange, hvor det ikke virker. Hvad med at udsætte den lidt:

setTimeout("height=ifrm.document.getElementById('ifrm_content').offsetHeight;",500);

Du kan måske også få den sat på IFramens onload med enten:

HTML:
<iframe onload="this.height=ifrm.document.getElementById('ifrm_content').offsetHeight" src="...

java script:
document.getElementById("iframensid").contentWindow.onload=function(){
parent.height=ifrm.document.getElementById("ifrm_content").offsetHeight;
}
Avatar billede roenving Novice
09. november 2007 - 04:08 #2
I det dokument, der loades i iframen:

<script language="javascript" type="text/javascript">
window.onload = function(){
var t=document.body.scrollHeight;
if(parent!=window)parent.document.getElementById('IFRAMEID').style.height=t+22+'px';
}
</script>

-- iframe-elementet i moder-dokumentet skal så have et id, der svarer til det kaldte (her 'IFRAMEID' !-)

-- bemærk at det ikke du cross-domain ...

-- og du kan i øvrigt også lave det fra moderdokumentet, men det kan bliver lidt mere tricky, hvis det skal virke cross-browser !o]
Avatar billede w13 Novice
29. juli 2008 - 09:35 #3
Lukketid?
Avatar billede danielss Nybegynder
29. juli 2008 - 11:25 #4
Jeg endte med at bruge denne kode:

<script type="text/javascript">
   
    function getElement(aID)
    {
        return (document.getElementById) ?
            document.getElementById(aID) : document.all[aID];
    }

    function getIFrameDocument(aID){
        var rv = null;
        var frame=getElement(aID);
        // if contentDocument exists, W3C compliant (e.g. Mozilla)
        if (frame.contentDocument)
            rv = frame.contentDocument;
        else // bad IE  ;)
            rv = document.frames[aID].document;
        return rv;
    }

    function adjustFrameSize(theframe)
    {
        var frame = getElement(theframe);
        var frameDoc = getIFrameDocument(theframe);
        var height = document.getElementById(theframe).contentWindow.document.body.scrollHeight;
        frame.height = height;
       
    }
    function check_load(what){
   
        if(document.getElementById(what).readyState == "complete"){
       
            adjustFrameSize(what);
            if(what == "bg"){ clearInterval(bg_timer); }
            if(what == "pf"){ clearInterval(pf_timer); }
       
        }
   
    }
    var bg_timer = setInterval ("check_load('bg');", 100);

</script>

<iframe id='bg' frameborder="0" scrolling="no" width="100%" onload="adjustFrameSize('bg');" src="get_info.php?username=<?php print $_GET['name']; ?>&what=bg"></iframe>

Den virker 100%...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester