Avatar billede hcs89 Nybegynder
31. januar 2009 - 01:35 Der er 16 kommentarer og
1 løsning

safari fejltolker javascript

Jeg har her på siden fået et java script:
--
window.onload = function(){
  var t=document.body.scrollHeight;
  if(parent!=window)parent.document.getElementById('iframe').style.height=t+20+'px';
}
--
det skulle få min iframe (#iframe) til at tilpasse sin højde efter indholdet. det virker i FF og IE - men ikke i safari.
problemet kan studeres her:

www.hellerup-kajakklub.dk/reform

Den kan godt finde ud af at gøre iframe'en større.. men ikke mindre når man går ind på en side der fylder mindre.. og når man trykker på det samme menupunkt flere gange føjer den hele tiden lidt til højden.. virker ikke så prof..

håber at nogen kan hjælpe mig :)
Avatar billede olebole Juniormester
31. januar 2009 - 17:01 #1
<ole>

For det første skal du slette linjen:
    <?xml version="1.0" encoding="iso-8859-1"?>

Den får IE til at fejltolke hele CSS' box-model. Desuden er det en fejl at bruge den, da du ikke bruger XML, men HTML. XHTML 1.0 Transitional har intet med XML at gøre - og det eneste, den har med XHTML at gøre, er markup-syntaksen. Der er ingen browser, som nogensinde vil tolke siden som XHTML.

Dernæst er det ikke body-elementet, men document-elementet (html-elementet, om du vil), som scroller.

Du kan ikke skrive:
    bla = t + 20 + 'px';

- men skal skrive:
    bla = (t + 20) + 'px';

Prøv noget i stil med:

window.onload = function(){
  var t=document.documentElement.scrollHeight;
  if(parent!=window)parent.document.getElementById('iframe').style.height=(t+20)+'px';
}

/mvh
</bole>
Avatar billede hcs89 Nybegynder
01. februar 2009 - 19:21 #2
der burde da ikke være nogen forskel på body.scrollHeight og documentElement.scrollHeight ?.. eneste forskel er vel head-elementet, som ikke har nogen 'fysisk' højde?

hvordan tolker den t + 20 + px, hvis man ikke skriver '(...)'?

w3c fastsætter da at transitional også er xhtml? og derfor også skulle være xml? (ved ingenting om xml derudover).. synes da ikke at jeg har nogle problemer med at IE fejltolker boxmodelen? hvordan er det den skulle fejltolke den?

mange spørgsmål - håber du vil tage dig tid til at svare :) er ret ny inden for dether kan du nok forstå :)
Avatar billede hcs89 Nybegynder
01. februar 2009 - 19:41 #3
hm.. når jeg ændrer t så den henter .documentElement, virker det fint i safari og ff.. men IE kan slet ikke læse scriptet mere..

faktisk.. den eneste grund til at jeg havde den ektra værdi (+20) var at ff af en eller anden grund lavede vinduet 20px for kort.. det problem forsvinder når jeg bruger .documentElement.. så det er jo godt. (når jeg kompenserede med +20 blev det pænt i ff men mindre pænt i IE og S)..

men hvorfor tror du ikke det virker i IE?
Avatar billede olebole Juniormester
01. februar 2009 - 19:47 #4
Der står jo stadig:
    <?xml version="1.0" encoding="iso-8859-1"?>

- på første linje.
Avatar billede hcs89 Nybegynder
01. februar 2009 - 20:31 #5
når jeg sletter den første linie skal jeg så også ændre
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da"> til <html> ??
ved ikke hvad det betyder, men der har da et eller andet med xml at gøre ikke?
Avatar billede olebole Juniormester
01. februar 2009 - 20:53 #6
Personligt ville jeg skrive siden i HTML 4.01, men har du skrevet den i XHTML 1.0 Transitional, så lad den i første omgang forblive sådan. Koden begynder du med:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
... osv - osv ...
Avatar billede hcs89 Nybegynder
01. februar 2009 - 21:53 #7
tja.. jeg havde bare forstået at xhtml ligesom var det sidste nye (bedste) - mest fremtidssikre.. men er måske ikke sådan. ville ikke være svært at lave det om til html som det ser ud nu - hvis du vil anbefale det.. er der nogle ulemper ved at skrive den i xhtml, siden du ville vælge html 4.01?
jeg kan godt lide at koden er mere stringent - men det er der jo ikke noget der forhindrer mig i at lave den, selvom jeg skriver html 4.01.
Avatar billede hcs89 Nybegynder
01. februar 2009 - 22:25 #8
lol.. nu har jeg ændret alt som du sagde.. nu ser det ud til at safari og IE kører fint nok, men nu har ff fået fuldstændig det samme problem som safari havde i starten.. iframen bliver ikke mindre når jeg henter en ny side.
Avatar billede olebole Juniormester
01. februar 2009 - 22:32 #9
Jeg ser stadig en XML-deklaration øverst
Avatar billede hcs89 Nybegynder
01. februar 2009 - 22:37 #10
Jeg har ændret det.. jeg har ikke lagt det op på nettet. kan godt lige gøre det så du kan se det. to sek..
Avatar billede hcs89 Nybegynder
01. februar 2009 - 22:52 #11
men hvad siger du til mit andet spørgsmål? vil det være hensigtsmæssigt at ændre det til html4.01?
Avatar billede olebole Juniormester
02. februar 2009 - 00:03 #12
Jeg kan ikke umiddelbart se fejl i Firefox  =)

Da XHTML 1.0 Transitional ifølge standarden altid skal tolkes som HTML, ser jeg ikke selv nogen grund til at bruge andet end HTML 4.01 Strict - med mindre, jeg laver noget _meget_ specielt.
Der er rigtig skidt understøttelse af XHTML på WWW, og det vil der sikkert være en del år endnu. Derfor er stadig enormt bøvlet at skrive XHTML 1.0 Strict eller XHTML 1.1 - og der bliver alligevel først tale om (næsten) ægte X(HT)ML i version 2.0
Avatar billede hcs89 Nybegynder
02. februar 2009 - 00:33 #13
kan du ikke se fejlen? så har du ikke forstået problemet.. prøv at åben klubben>bestyrelsen og kontaktpersoner. og gå så tilbage til forsiden ved at klikke på banneret i toppen.. eller vælg et af de andre menupunkter..
og prøv så at scroll nedad.. ser ikke så pænt ud vel?

xhtml: ok lyder som om det mest fornuftige er at skifte tilbage til html4.01.. er heller ikke noget problem.. vil gerne bare være sikker på hvad der er det mest fornuftige før jeg begynder at skrive samtlige undersider :P tak for hjælpen!
Avatar billede olebole Juniormester
02. februar 2009 - 01:13 #14
I min Firefox 3.0.5 under WinXP er der ingen problemer i bunden - uanset, hvor meget jeg navigerer rundt  =)
Avatar billede hcs89 Nybegynder
02. februar 2009 - 11:19 #15
seriøst?!

jeg har også 3.0.5 (og winxp - men det burde vel være ligemeget)..
iframen kan godt gøre sig mindre hos dig? det er skuda for mærkeligt..
Avatar billede hcs89 Nybegynder
02. februar 2009 - 12:50 #16
lol.. jeg tror jeg dropper hele iframe-opbygningen.. er for meget pis med det.
men du mener stadig ikke at xhtml kan betale sig?
hvis jeg gerne vil have at browserne skal tolke min kode så 'rigtigt' og ens som muligt, er det så html4.01?
du må gerne oprette et svar. du har brugt alt for meget tid på dether til ikke at få dine points :)
Avatar billede hcs89 Nybegynder
18. august 2010 - 18:53 #17
lukker
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