Avatar billede gider_ikke_mere Nybegynder
22. december 2006 - 14:03 Der er 43 kommentarer og
1 løsning

Omskriv js script til flere browsere

Jeg har nedenstående script der ændrer højden på 3 divs: venstre menu, container, samt højre menu.

Da IE 6 & 7 ikke laver den rigtige højde, dkal jeg have omskrevet scriptet til at tilpasse sig efter IE eller ikke IE.

Altså hvis brugerens browser er IE 6 eller 7, skal der tillægges x antal pixels. Hvis ikke, køres scritet som vist.

<script type="text/javascript">
var divs = ['v__div','h__div','Dcenter'];
var faste = ['topinfo','hovedmenu','undermenu', 'memoryticker']
function syncronizeDivs(){
    var maxH = document.body.offsetHeight ;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;faste.length>j;j++){
            if(d[i].id==faste[j])maxH -= d[i].offsetHeight;
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';
        }
    }
}
</script>
Avatar billede roenving Novice
24. december 2006 - 12:53 #1
Indsæt f.eks.

var uA = navigator.userAgent.toLowerCase();
var xH = uA.indexOf("msie")>0 && uA.indexOf("opera")==-1 ? 3 : 0;

-- og før den sidste løkke:

    }
    maxH += xH;
    for(i=0;d.length>i;i++){

-- og behold selv de fleste af pointene '-)
Avatar billede gider_ikke_mere Nybegynder
24. december 2006 - 14:41 #2
Har ikke tid til at checke i dag, men har prøvet et lignende script. Der gav første linie en fejl:
var uA = navigator.userAgent.toLowerCase();

Og hvorfor kan IE6 & 7 ikke finde ud af at gøre mine divs lige brede og høje?
Avatar billede gider_ikke_mere Nybegynder
24. december 2006 - 14:43 #3
For at forstå min problemstilling, kan du evt. se her: http://www.eksperten.dk/spm/751306
Avatar billede roenving Novice
24. december 2006 - 23:46 #4
Det er zq da utroligt, at du ikke kan komme af med den tomme html-kommentar, som forhindrer IE i at forstå grundlæggende css-regler ,-(

-- og der bør ikke være problemer med navigator.userAgent, som _alle_ browsere skulle forstå (og i en hurtig test kørte den også i mine browsere !-)
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 01:33 #5
Hvor eksakt skal

    }
    maxH += xH;
    for(i=0;d.length>i;i++){

...indsættes?
Avatar billede roenving Novice
25. december 2006 - 01:36 #6
-- jeg tog linjen før og efter med for at vise det, men jeg kan jo godt se, at den findes flere gange, men det er ved den sidste løkke, den skal være lige før !-)
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 01:43 #7
Min testside er denne: http://www.vamdrup-info.dk/Gtest.php

Jeg kan ikke lige se om jeg har gjort det rigtigt. Hvad bestemmer hvor meget der bliver lagt til i IE?
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 01:44 #8
Jeg har lavet det således:

<script type="text/javascript">
var uA = navigator.userAgent.toLowerCase();
var xH = uA.indexOf("msie")>0 && uA.indexOf("opera")==-1 ? 3 : 0;
var divs = ['v__div','h__div','Dcenter'];
var faste = ['topinfo','hovedmenu','undermenu', 'memoryticker']
function syncronizeDivs(){
    var maxH = document.body.offsetHeight ;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;faste.length>j;j++){
            if(d[i].id==faste[j])maxH -= d[i].offsetHeight;
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    for(i=0;d.length>i;i++){
    maxH += xH;
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';
        }}
    }
}
</script>
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 01:47 #9
Jeg vil lige nævne at mit kendskab til JS er ekstremt dårligt. Jeg fatter ikke en lytlab af det.

Scriptet er dit eget jeg har fundet i en anden tråd.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 01:49 #10
Ikke at jeg ikke kan noget med programmering, men hvad i alverden betyder:

==-1 ? 3 : 0;
Avatar billede roenving Novice
25. december 2006 - 02:06 #11
Det vil være bedre med:

<script type="text/javascript">
var divs = ['v__div','h__div','Dcenter'];
var faste = ['topinfo','hovedmenu','undermenu', 'memoryticker']
function syncronizeDivs(){
    var uA = navigator.userAgent.toLowerCase();
    var xH = uA.indexOf("msie")>0 && uA.indexOf("opera")==-1 ? 3 : 0;
    var maxH = document.body.offsetHeight ;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;faste.length>j;j++){
            if(d[i].id==faste[j])maxH -= d[i].offsetHeight;
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    maxH += xH;
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';
        }
    }
}
</script>

-- og den ternære operator (operator med tre dele !-) er en forkortelse for en if-sætning, lidt lige som IIF f.eks. i Excel (HVIS på dansk):

variabel = betingelse ? "værdi hvis sand" : "værdi hvis falsk";

-- så

var xH = uA.indexOf("msie")>0 && uA.indexOf("opera")==-1 ? 3 : 0;

kan også skrives sådan:

var xH;
if(uA.indexOf("msie")>0 && uA.indexOf("opera")==-1){
  xH = 3;
}else{
  xH = 0;
}
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:21 #12
Nu har jeg ikke lige en maskine med IE6 startet op. Jeg forhøjer de 3 divs, men min baggrundsdiv laver åbenbart problemer. Den kan jeg ikke se bunden af. Jeg har lavet en border på 2 px som ses i FF.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:21 #13
... og i Opera.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:25 #14
Jeg havde et næstent færdigt design med tabeller. Hvorfor holdt jeg mig ikke bare til det :-(
Avatar billede roenving Novice
25. december 2006 - 02:27 #15
-- med de 200 px ekstra, ligner det da stort set det samme ?-)
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:30 #16
Ja, stadig en hvis bund på ca. 10-12px, som bare ikke skal være der...

Jeg har slet ingen højde på min bgdiv som indeholder hele isden. At sætte den til auto hjælper intet. Den DIV fylder åbenbart mere end hvad IE vil vise!!!
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:31 #17
stadig en hvis bund = stadig en HVID bund!
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:35 #18
Fjerner jeg min center div passer bunden, men jeg kan stadig ikke se min midlertidige border på 2px i bunden.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:39 #19
Selv en border på 200px dukker ikke op???
Avatar billede roenving Novice
25. december 2006 - 02:40 #20
Måske kan det være IEs rendering af linjeskift:

</div></div><!-- Slut på h__div --></div><!-- Slut på bg__div -->
</body>
</html>
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:45 #21
Jamen, jamen... det virker s.. - bortset fra jeg stadig ikke kan sen den midlertidige nederste border.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:55 #22
Hvad er forklaringen på at jeg ikke må have skjulte kommentarer ved mine DIVS? De andre kommentarer må åbenbart gerne være der.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 02:59 #23
Jeg har helt fjernet dit tillægsscript. Det har ingen betydning nu!
Avatar billede roenving Novice
25. december 2006 - 03:01 #24
¡Muy bueno!

-- der skulle ikke være noget i vejen med kommentarerne, men IE har en renderingsbug omkring visse lukketag, deriblandt </td> og </div>, hvor den ved tabelcellen faktisk renderer et linjeskift foran lukketagget og ved div mindst renderer en linjehøjde i forbindelse med lukketagget ...

-- senest er jeg også stødt ind i noget, der lignede det samme med lister !-)
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 03:04 #25
Du har fuldt ud fortjent dine point. Har du en ide til min mystiske linie: <!--  --> før doc declaration?

Får du den også i IE?
Avatar billede roenving Novice
25. december 2006 - 03:07 #26
Jeps, og jeg har aldrig haft NIS installeret !-)

-- så det må stamme fra et eller andet, du har serverside ...

-- ellers tak for point ;~}
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 03:07 #27
Jeg har ingen popupkiller installeret udover den i NIS, ingen mærkelige værktøjslinier m.m., og selvom jeg deaktiverer NIS og NAV fuldstændig, kommer den stadig - både i IE6 & IE7.
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 03:13 #28
Det er mig der takker. Jeg har rodet med dette problem i ugevis! Det er garanteret det samme der har drillet mig her: http://www.eksperten.dk/spm/751306.

Jeg tror hellere jeg må snige mig til køjs, inden konen kommer rendende :-)

... og hvad - jeg har lige fået den bedste julegave ;-)

Har du en sidste kommentar til designet?

Der kommer på et tidspunkt et spm. mere i en ny tråd. Hvis brugerens browser er i mindre end 1024*768, vises venstre menu ikke helt. Jeg skal have fundet en anden måde at centrere siden på. Tak for nu.
Avatar billede roenving Novice
25. december 2006 - 03:22 #29
Bedste centrering (horisonalt):

Fuld doctype (inkl. dtd-link)

Et site-element (en div, der omkranser alt indhold indenfor body !-) med en css, der f.eks. kan se sådan ud:

<div id="site" style="width:960px;margin:0 auto;">

-- altså defineret bredde og auto på side-marginer !o]
Avatar billede gider_ikke_mere Nybegynder
25. december 2006 - 12:29 #30
Så bliver siden jo bare venstrejusteret!
Avatar billede roenving Novice
25. december 2006 - 23:20 #31
-- så har du ikke fuld doctype inkl. dtd-link som det første i html-dokumentet ...

Sådan skal dokumentet starte -- de allerførste linjer i dokumentet skal f.eks. se sådan ud:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

-- selv en ligegyldig html-kommentar foran doctype disable de væsentligste dele af css i IE

-- og endnu værre bliver det, hvis du f.eks. anbringer en en xml-deklaration før doctype ,-(
Avatar billede gider_ikke_mere Nybegynder
26. december 2006 - 00:39 #32
Desværre er jeg indtil videre ikke selv herre over hvad der står før DOC-typen, men den står skrevet som du og andre anbefaler.
Avatar billede roenving Novice
26. december 2006 - 00:45 #33
Det skal du altså sikre dig ...
Avatar billede gider_ikke_mere Nybegynder
26. december 2006 - 00:55 #34
Det eneste jeg kan komme i tanker om at gøre, er at prøve at fjerne NIS. Men hvis andre får linien, hjælper det ikke noget. Får du linien?
Avatar billede roenving Novice
26. december 2006 - 00:57 #35
Jepz, og jeg har ingenting instaleret, som også får denne tingest med på andre websider ...
Avatar billede pidgeot Nybegynder
26. december 2006 - 01:01 #36
Bare for at du får et ekstra input, så gælder det samme for mit vedkommende. Det skulle vel aldrig være sådan så du ikke håndkoder det hele og det så er din editor der smider den ind? Der er nemlig OVERHOVEDET ingen grund til at NIS skulle gøre det - godt nok er det ikke verdens bedste program, meeeeeen... :)
Avatar billede gider_ikke_mere Nybegynder
26. december 2006 - 01:03 #37
Jeg bruger Dreamweaver 8. Jeg vil prøve at finde et ftp program og uploade med dette.
Avatar billede gider_ikke_mere Nybegynder
26. december 2006 - 02:02 #38
Komplet afinstallering af NIS, samt upload via LeechFTP hjælper ikke en dyt, så nu venter jeg på svar fra min udbyder af webhotellet.

Tak for input!
Avatar billede gider_ikke_mere Nybegynder
26. december 2006 - 14:43 #39
Jeg fandt fejlen. IE vil ikke acceptere at jeg inkluderer nogle PHP filer før doc declaration. Dette resulterer i den pågældende linie. Alt andet php script der ligger før, laver ingen kuk - som det heller ikke burde. Heldigvis kan jeg i dette tilfælde rokere rundt på scriptene, så jeg stadig får de funktioner jeg ønsker.

1000 tak for hjælpen, og for at holde mig ved ilden :-)
Avatar billede roenving Novice
26. december 2006 - 19:25 #40
Y're welcome !-)
Avatar billede olebole Juniormester
27. december 2006 - 13:56 #41
<ole>

Du kan sagtens inkludere PHP-filer før DTD'en ... de må blot ikke udskrive noget somhelst til dokumentet. Funktions-biblioteker kan således godt inkluderes  ;o)

/mvh
</bole>
Avatar billede gider_ikke_mere Nybegynder
27. december 2006 - 18:03 #42
Jeg forstår heller ikke hvorfor jeg får fejlen.
Den ene php sætter variabler til DB kald, den anden indeholder funktioner... og jeg ser lige at første linie i den er:

<!--  --><?php

... så der har vi synderen *SSS*
Avatar billede olebole Juniormester
28. december 2006 - 12:35 #43
ooops ...  ;o)
Avatar billede gider_ikke_mere Nybegynder
28. december 2006 - 20:01 #44
Jeg har også overvejet om jeg ikke snart skal have en ny computer. Den laver simpelthen så mange fejl 40 i denne tid.
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