Avatar billede sorteplov Nybegynder
14. marts 2002 - 04:08 Der er 7 kommentarer og
1 løsning

iFrame skalering

Har haft det her spm. oprettet i Javascript-kategorien, men ingen kunne tilsyneladende hjælpe, så nu prøver jag at se om jeg var i en "forkert" kategori:

Jeg har fundet dette vældigt fint virkende script under spm: http://www.eksperten.dk/spm/167681, nu er problemet bare at jeg skal bruge et script der også virker i NS6+ (PC/Mac) og på IE 5+ (Mac) - det gør det her nemlig ikke.
Kan man derudover få iframen til at køre dette script hver gang der loades nyt indhold i iframen (se evt. spm. 167681)?
<script language="Javascript">
function juster() {
dw = document.body.scrollHeight;
fw = document.body.offsetHeight;
if (dw > fw) {
diff = dw - fw + 20;
obj = (document.getElementById) ? parent.document.getElementById("ifr").style : parent.document.all.ifr.style;
h = parseInt(obj.height);
obj.height = h + diff;
}
}
</script> 
Avatar billede sorteplov Nybegynder
14. marts 2002 - 04:09 #1
Ideen er at slippe for reload :-)
Avatar billede olebole Juniormester
14. marts 2002 - 05:56 #2
<ole>
Jeg er kommet i tanker om noget. I IE4.5/Mac kan jeg huske noget om, at onload-event'en ikke fyres af på en iframe .....mon ikke det også gælder for IE5+ ...? Jeg har ikke min G3'er fremme i øjeblikket, så jeg kan ikke teste. Prøv i bunden af siden at skrive:
  if (document.all && navigator.platform=="Mac") { ...DIN_KODE... }
  </body>

I NS6+ hedder det ikke document.scrollHeight - men document.height

Så skulle tingene gerne lykkes for dig  ;o)
/mvh
</bole>
Avatar billede sorteplov Nybegynder
16. marts 2002 - 12:30 #3
Hej olebole

Har nu prøvet det du skriver og med en lille omskrivning af scriptet er det kommet til at virke i NS, men IE på Mac kan det åbenbart ikke lade si g gøre, pga. anderledes definition af variablen document.body.scrollHeight eller fordi man ikke kan "spørge" på højden af fx en tabel.

Det foreløbigt virkende script ser således ud:



function justerHoejde(){

var hoejde, obj;

    if(navigator.appName=="Netscape"){
        hoejde = parseInt(document.height);
    }
    else{
        hoejde = parseInt(document.body.scrollHeight);
    }
       
    obj =  parent.document.getElementById("container")
    obj.height = 0;
  obj.height = hoejde + 20;   
}


Har du mon en løsning på IE/Mac problemet?
Avatar billede olebole Juniormester
16. marts 2002 - 17:43 #4
Jeg har som sagt ikke min Mac oppe at køre i øjeblikket - men bruger du slet ikke 'alert()'...? Det er da bare med at komme igang med en masse forskelligt og alert'e resultater, så du kan finde ud af, hvad man kan og ikke kan.
Skid på iframen i første omgang og find ud af, hvad du kan måle på og ikke  ;o)
/mvh
Avatar billede sorteplov Nybegynder
18. marts 2002 - 08:11 #5
Jo jo der bliver alert'et derudaf, men kan ikke finde noget man i IE/Mac kan returnere højden på (altså em højde der bliver sat dynamisk - og ikke er sat i forvejen)

sorteplov :-)
Avatar billede olebole Juniormester
18. marts 2002 - 14:17 #6
Jeg fårstår ikke, hvad du skriver. "En højde, der bliver sat dynamisk...".
Jeg bliver lidt i tvivl, om vi taler om det samme?
/mvh
Avatar billede sorteplov Nybegynder
18. marts 2002 - 15:18 #7
Ja du har ret det var nok lidt kryptisk.

Den iframe der skal skaleres ineholder fx. en tabel, hvis højde er afhængigt af det indhold den bliver fodret med fra en database. Browseren ved altså ikke hvor høj tabellen er = hvor høj iframen skal være. Jeg kan ikke få returneret hvor høj tabellen i IE/Mac. Giver det nogen mening?
Avatar billede sorteplov Nybegynder
16. april 2002 - 18:38 #8
Jeg lukker lige spoergsmaalet. Det er vidst en DOM fejl i IE/Mac, men jeg kan ikke umiddelbart loese det.

Ellers tak olebole
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