Avatar billede Jeannine Nybegynder
03. marts 2009 - 13:00 Der er 18 kommentarer og
1 løsning

CSS redirect efter Browser.. virker ikke som det skal..

Davs allesammen.

Jeg er ved at lave et site med div layers, defineret i css. Virker fint i både IE 7 og 8, Firefox og Chrome, men typisk og selvfølgelig ikke i IE6.

Så langt så godt, så laver jeg en css til IE6 og indsætter i Headeren:

<!--[if lte IE 6]><link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->
<link href="styles.css" rel="stylesheet" type="text/css" />

Jeg har nu bøvlet i en halv dag, fordi det ikke virkede. Tilsyneladende er IE6 hamrende ligeglad og ignorerer det og tager bare fortsat fat i styles.css

Godt, så prøvede jeg denne
<!--[if lte IE 6]><link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->
<!--[if gt IE 6]><link href="styles.css" rel="stylesheet" type="text/css" />
<![endif]-->

Det virker, så er IE sat på plads. MEN hvad med alle de andre browsere....? Skal jeg også lave en if til alle andre? Eller findes der ikke en simpel anden metode til at ordne det?
Avatar billede nidyahou Praktikant
03. marts 2009 - 13:06 #1
hvis det virker i dine andre browsere så laver du et stylesheet der indeholder alle dine styles der virker fint i de browsere og så laver du ét stylesheet til dine IE6 hacks, som så retter det til. eks:

<link href="styles.css" rel="stylesheet" type="text/css" />
<!--[if IE 6]>
<link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->

det logiske er at have din styles.css først, fordi de almene styles så er definerede, og så add'er du bare på med hacks nedenudner hvis det er nødvendigt.
Avatar billede Jeannine Nybegynder
03. marts 2009 - 13:43 #2
Hej og tak for dit svar. Dog virker den ikke anderledes end den, som jeg havde før. IE 6 ignorerer at den skal hente cssen i ie6.css og henter det fortsat fra styles.css :(

IE6 går kun til ie6.css, når jeg også indsætter if til IE, der er større end IE6. Findes ikke evt. en if else sætning som kan fortælle alle, der er større en IE6 og alle andre browsere skal tage fat i styles.css... ;o)
Avatar billede nidyahou Praktikant
03. marts 2009 - 13:47 #3
har du prøvet at se i firebug hvad den henter ned? ellers åben firefox og hent firebug. vælg fanebladet inspicer og vælg de elementer der ikke opfører sig som de skal. prøv at skriv hvad du ser de har af styles
Avatar billede Jeannine Nybegynder
03. marts 2009 - 13:53 #4
Hejsa.

Den henter styles.css
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<link type="text/css" rel="stylesheet" href="styles.css">

Men problemet er også kun i IE6, som ikke går til ie6.css, som den gerne skulle. Den ignorerer det sålænge jeg ikke laver decideret besked om at styles.css er til senere versioner...

suk.
Avatar billede olebole Juniormester
03. marts 2009 - 14:01 #5
<ole>

Uanset, hvad du måtte mene, virker det eksempel, nidyahou viste dig. Nu prøver vi så denne version, som også lader browsere ældre end IE6 (selvom der næppe er mere end fire tilbage på WWW) loade 'ie6.css':

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<link type="text/css" rel="stylesheet" href="styles.css" />
<!--[if lte IE 7]>
<link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->

Virker dét ikke, må du lægge et link, for så er det helt sikkert, du laver andre fejl  =)

/mvh
</bole>
Avatar billede olebole Juniormester
03. marts 2009 - 14:03 #6
Hvis du vil læse mere om conditional comments og deres syntaks, kan du gøre det her:
    http://msdn.microsoft.com/en-us/library/ms537512.aspx
Avatar billede Jeannine Nybegynder
03. marts 2009 - 14:08 #7
ok, så har jeg dårlig beskrevet problemet. Desværre ignorerer IE6 fortsat if sætningen og henter styles.css. Den henter kun ie6.css, hvis jeg skriver følgende:

<!--[if lte IE 6]><link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->
<!--[if gt IE 6]><link href="styles.css" rel="stylesheet" type="text/css" />
<![endif]-->

Men det udelukker jo alle de andre browsere og det er ikke meningen..

Link til siden er www.seniorerhvervdanmark.dk/design
Avatar billede olebole Juniormester
03. marts 2009 - 14:58 #8
Nej, jeg tror ikke dine beskrivelser fejler noget, men jeg tror, du 'lytter' dårligt. Du kan ikke forvente noget virker, hvis du ikke gør præcist, som vi foreslår. Prøv, det jeg viste dig - og i præcis dén række følge. Der er således en verden til forskel på at skrive:

<!--[if lte IE 7]>
<link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles.css" />

- og:

<link type="text/css" rel="stylesheet" href="styles.css" />
<!--[if lte IE 7]>
<link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->

Hvor det første naturligvis ikke vil virke, da reglerne i 'styles.css' så overskriver dem i 'ie6.css'. Det er jo det modsatte, der skal ske  ;o)

Dette virker med højglansforkromet statsgaranti - men det kræver som sagt, du gør præcis, som der skrives. Virker det ikke, må vi se hele koden
Avatar billede olebole Juniormester
03. marts 2009 - 15:01 #9
Jeg så ikke linket til siden før. Hvis du tager dig af fejlene i dokumentet:
    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.seniorerhvervdanmark.dk%2Fdesign%2F&charset=%28detect+automatically%29&doctype=Inline&group=0&outline=1&verbose=1

- så skal jeg prøve at huske at kikke på koden i aften, når jeg har fri  =)
Avatar billede Jeannine Nybegynder
03. marts 2009 - 15:05 #10
Hejsa.

Det ville da være alt for meget at du skulle kigge på koden. Men validatoren hægter fast i Javascript, som den åbenbart opfatter som styles? Javascript delen virker fint i IE6. Jeg kørte selv validatoren inden jeg smed Javascript delen ind og der var den fejlfri ;o) Derfor har jeg svært ved at forstille mig, at det er skyld i at IE6  ikke tager fat i style ie6.css i headeren.
Avatar billede Jeannine Nybegynder
03. marts 2009 - 15:33 #11
indtastede lige for sjov www.microsoft.com og sparnord.dk... de har vist også et hav af fejl... så jeg tror ikke at det er så afgørende med den validering og jeg tror bestemt ikke, at det har noget at gøre med at den ikke henter sit style, som den skal. Men selvfølgelig skal den helst være god.

Jeg kunne ingen steder finde hvordan man laver conditionaler til andre browsere. Heller ikke på den fine side, som du sendte mig. Jeg prøvede med:

<!--[if ! IE]><link href="styles.css" rel="stylesheet" type="text/css" />
<![endif]-->

.....meeeen så viser den bare en blank side.. SNØFT
Avatar billede olebole Juniormester
03. marts 2009 - 16:10 #12
Der er masser af mennesker, der render og skyder hinanden døde for tiden. Betyder det så, at det også er helt i orden, hvis du gjorde det samme? Sær argumentation!

Nu har du, jeg ved ikke, hvor mange gange fået at vide, at vi må se hele din kode, hvis det, vi viser, ikke fungerer for dig. Enten evner du ikke at forstå en simpel besked, eller også blæser du bare på, hvad vi beder om for at kunne hjælpe dig.

Sandelig om ikke også du er rystende ligeglad med, at du skriver fejlfyldt skodkode ... bare fordi, der er andre, der også skriver dårlig kode!

"så jeg tror ikke at det er så afgørende med den validering og jeg tror bestemt ikke, at det har noget at gøre med at den ikke henter sit style, som den skal."

Hvorfor i alverden spørger du, når du ikke vil lytte? Den holdning, at troen er et væsentligt stærkere argument end viden og lang erfaring, er præcis, hvad der gør det umuligt at diskutere med religiøse fundametalister.

Hvis du ikke tager din kode seriøst, gider jeg ikke tage dig seriøst. Jeg er ude af tråden!
Avatar billede Jeannine Nybegynder
03. marts 2009 - 16:50 #13
Halleluja, sikke en voldsom reaktion!

Jeg sidder her bare med munden vidt på gab og forstå slet ikke hvorfor jeg bliver skudt så hårdt på.

Er det her ikke et seriøst og godment forum hvor vi vil hjælpe hinanden og konstruktive? Hvad sker her og hvorfor?

Jeg synes godt nok at du slår mig hårdt og uretfærdigt og forstår ikke hvad der har fornærmet dig så voldsomt. Det er jeg ked af, for jeg er et helt almindeligt og godsindet menneske, der bare vil forstå og lære noget og give det videre. Jeg synes ikke, jeg fortjener at blive svinet sådan til her og angrebet så personligt.
Avatar billede Jeannine Nybegynder
03. marts 2009 - 19:35 #14
Skulle nogle andre også opleve problemet, så fandt jeg alligevel løsningen. :D

<![if !IE ]><link href="styles.css" rel="stylesheet" type="text/css" />
<![endif]>
<!--[if lte IE 6]><link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->
<!--[if gt IE 6]><link href="styles.css" rel="stylesheet" type="text/css" />
<![endif]-->

nu virker det fint i alle browsere og IE6, som man næsten skal betragte som en browser i sig selv ;o)

Skulle OleBole måske også læse lidt med, så ville jeg bare skrive til ham, at vi må have snakket forbi hinanden.

Jeg kan ikke forklare mig det anderledes. Det er synd, at det skal ligge sådan og stå i luften. Men når man afbryder kommunikationen, så er da jo ingen chance for at få det redet ud igen. Det er jeg godt nok ked af, men jeg kan ikke gøre mere. Selvfølgelig vil jeg kigge på fejlene i validatoren og vil gerne have ting i o. Synes bare ikke at du behøvede "skyde" sådan på mig.

However, tak fordi I prøvede hjælpe videre.
Avatar billede mclemens Nybegynder
03. marts 2009 - 23:00 #15
Når jeg skimter tråden igennem og ser løsningen til slut ser det mest af alt ud til at problemet har været at style defineringerne i ie6.css ikke har kunnet overrule dem der stod i styles.css - øjensynligt grundet manglende selectors betydning så de nødvendige styles fra styles.css blev overrulet eller manglende brug af !important i ie6.css.

Hvis du ikke allerede har prøvet at benytte nidyahou forslag:
<link href="styles.css" rel="stylesheet" type="text/css" />
<!--[if IE 6]>
<link href="ie6.css" rel="Stylesheet" type="text/css" />
<![endif]-->

med to meget korte css filer f.eks.:

styles.css:
body{background:red;}

ie6.css:
body{background:blue;}

i et simpelt html dokument som:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>
<link href="styles.css" rel="stylesheet" type="text/css">
<!--[if IE 6]>
<link href="ie6.css" rel="Stylesheet" type="text/css">
<![endif]-->

</head><body>
test
</body></html>

- ville jeg anbefale at du lige prøvede efter igen, det med at vedligeholde en komplet ie6.css med css fra styles.css istedet for blot tilføjelser/hacks er måske ikke nødvendigt.

* Oventående er skrevet udfra min formodnævning af at du har overført alle en masse styles til ie6.css, da du jo ikke leverer styles.css til IE 6 i ovenstående *

...

- Husk at <!--[if lte IE 6]> også matcher browsere under IE 6 foruden IE 6.
- Har du overvejet at skrive html istedet for xhtml ?
- Tag det ikke så tungt med hvad Ole skrev, han skriver tit ting direkte uden at pakke det ind ... hans mening var blot at hjælpe dig ved at kritisere dig - i det håb at du så rettede op på kodestilen og dermed lettede dit eget arbejde med fejl som følge af markup problemer m.v..
Avatar billede Jeannine Nybegynder
04. marts 2009 - 12:37 #16
Hej Mclemens.

Rigtig mange tak for din hjælp og forslag. Jeg kigger på det og afprøver det.

Tak, det var sødt og dejligt ;o)
Avatar billede Jeannine Nybegynder
04. marts 2009 - 21:39 #17
Hej igen MClemens. Tusinde tak for dit indlæg!!!

Nogle gange bliver man virkelig blind af at kigge på kode. Jeg så faktisk slet ikke forskellen før end NU.. sikke en i... jeg er. Troede jeg havde prøvet det lige som nidyahou forslå, men det gik først nu op for mig, at End if skal stå helt til sidst...

jo og ved du hvad det er bare suuuuperfed, for nu virker det lige som det skal! Tak for tipset med Cssen!!! Så det er måden at gøre det på. Bare de elementer, hvor IE6 stejler i og vupsti, det hele er i fin orden.

Desuden har jeg ellers ryddet fint op og validatoren giver grøn lys. Dumdiddeldej.. så kan jeg sove godt og fint.

Tusinde gange tak engang til og hvordan kan jeg nu give points til dig?
Avatar billede mclemens Nybegynder
04. marts 2009 - 22:15 #18
Velbekom, men jeg skal ikke have point ;)

- Du opretter et nyt spørgsmål.
- - Med overskrift: Point til nidyahou
- - og beskrivelse: ref http://www.eksperten.dk/spm/866167
( eller lignende ;), ref er for at udelukke tvivl om point snyd )

- Du lægger så det nye spørgsmåls url herinde i en kommentar,
så nidyahou kan finde frem til hvor han/hun skal kaste et svar.

- Accepterer svaret ligesom du gjorde med dit eget tidligere.

Hygge :)
Avatar billede mclemens Nybegynder
05. marts 2009 - 10:17 #19
Point til nidyahou -> http://www.eksperten.dk/spm/866405
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