Tha_Zaynt Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Er det noen som har en liten kodesnutt som finner ut hvilken browser du bruker, og ut ifra det velger stylesheet? Vet det skal finnes her på forumet men finner det ikke.. Lenke til kommentar
dabear Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Det er altfor usikkert. server variabelen USER_AGENT er den du er ute etter, men denne kan lett endres av brukeren. Derimot så viser alle browsere untatt IE html likt (untatt margin, pading, border og noen ting til). Hvis du vil bruke en ekstra style til IE bruker du noe sånt som: <!--[if ie] kode her [endif]--> Lenke til kommentar
Loomy Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 $browser = $_SERVER['HTTP_USER_AGENT']; if (eregi("firefox", $browser)) { // Du bruker Firefox 1.0 } elseif (eregi("opera", $browser)) { // Du bruker opera... } osv.. Den funker sånn passe bra, men det finnes ingen 100% sikre metoder siden de fleste nettlesere har muligheten til å identifisere seg som noe annet (Opera identifiserer seg f.eks som IE som default). Lag et lite script som echo'er $_SERVER['HTTP_USER_AGENT'] for å se hvordan de forskjellige browserene identifiserer seg - det er mye rart fra browser til browser og fra versjon til versjon, så det er umulig å lage et idiotsikkert script. Lenke til kommentar
Tha_Zaynt Skrevet 18. oktober 2004 Forfatter Del Skrevet 18. oktober 2004 (endret) Hvis jeg vil at den skal bruke en spesiell stylesheet bare hvis brukeren har opera, kan jeg da gjøre det sånn? <?php $browser = $_SERVER['HTTP_USER_AGENT']; if (eregi("opera", $browser)) { echo ""<link href="opera.css" rel="stylesheet" type="text/css">""; } else { echo ""<link href="style.css" rel="stylesheet" type="text/css">""; } ?> EDIT; Fikk parse error på den.. Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:\appserv\www\nisselink\testsie.php on line 8 Hvordan fikser jeg det? Endret 18. oktober 2004 av Tha_Zaynt Lenke til kommentar
???????? Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Det ser nesten bra ut, to ting bare - hvorfor har du to " etter echo og så må du escape " i href=\" Lenke til kommentar
Nervetattoo Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Hva med å bare legge alle i html'en som alternate stylesheet. Da kan bruker skifte stylesheet uten at han må laste om siden. Eller kanskje ikke ie støtter dette, hadde jo vært litt typisk. Lenke til kommentar
Tha_Zaynt Skrevet 18. oktober 2004 Forfatter Del Skrevet 18. oktober 2004 (endret) Det ser nesten bra ut, to ting bare - hvorfor har du to " etter echo og så må du escape " i href=\" Er ikke sikker på hvordan jeg escaper..kan du hjelpe meg litt *trykke inn med teskje*? @findus: Må man laste om siden for at dette skal funke da? Trodde denne koden valgte stylesheet slik at man slapp det...Poenget med at jeg gjør det slik er at siden min ikke ser bra ut i Opera på "standard" css'n min, og hvis jeg lager det slik at brukeren velger stylesheet må jegg inn med unødvendige og stygge knapper..dessuten er det ikke sikkert at brukeren skjønner at han/hun må skifte stylesheet for at det skal se bra ut.. EDIT; Gjorde det slik, og det funka fett! <?php $browser = $_SERVER['HTTP_USER_AGENT']; if (eregi("opera", $browser)) { echo "<link href=\"opera.css\" rel=\"stylesheet\" type=\"text/css\">"; } else { echo "<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">"; } ?> Endret 18. oktober 2004 av Tha_Zaynt Lenke til kommentar
dabear Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 (endret) <?php $browser = $_SERVER['HTTP_USER_AGENT']; if (eregi("opera", $browser)) { echo "<link href=\"opera.css\" rel=\"stylesheet\" type=\"text/css\">"; } else { echo "<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">"; } ?> Vil si at den koden der er-unskyld uttrykket-rævva.Du bruker eregi istedet for stristr ev. strstr, og du bruker dobbeltfnutter når det ikke er noe newline/tabs/variabler i teksten. Som jeg tidligere sa, kan $_SERVER['HTTP_USER_AGENT']; lett endres i fks firefox eller til og med opera (der blir opera med istringen likevell da). Kan heller ikke skjønne at sida di ser så mye dårligere ut i opera, da er det mest sansynlig DU som har koda feil. Skal du bruke en slik kode i det hele tatt, bruk denne: <?php $browser = $_SERVER['HTTP_USER_AGENT']; if (stristr('opera', $browser)) { echo '<link href="opera.css" rel="stylesheet" type="text/css">'; } else { echo '<link href="style.css" rel="stylesheet" type="text/css">'; } ?> Dette er forøvrig noe alle burde få med seg, man bruker kun dobbeltfnutter der det er nødvendig, og det er ganske sjelden! Endret 18. oktober 2004 av dabear Lenke til kommentar
Nervetattoo Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Om man bruker dobbeltfnutter eller ikke er da smakssak mye godt. Bortsett fra at man da i tilfeller må bruke dobbeltfnutter og ikke kan bruke enkeltfnutter. Jeg tror jeg leste litt feil på tråden når jeg sa det med "alternate stylesheet" tenkte du mente at du skulle tilby flere stilark til brukeren, ikke at det var agent spesifikke stilark. Så da gjelder ikke mitt forslag lenger Lenke til kommentar
???????? Skrevet 18. oktober 2004 Del Skrevet 18. oktober 2004 Tror det er en ting du bude få med deg dabear, her i PHP forumet svarer vi ikke på den måten! Du kommer med dårlig kritikk og et par av punktene du klager på har utrolig lite å si. Lenke til kommentar
Lokaltog Skrevet 19. oktober 2004 Del Skrevet 19. oktober 2004 (endret) Det å bruke dobbeltfnutter er faktisk noe man bør begrense bruken av. Ofte slipper man å escape så mange bokstaver (særlig om man outputter HTML-kode, men da foretrekker jeg heredoc-syntaksen). Det som er greia med enkeltfnutter er at PHP bare bruker/outputter strengen uten å gjøre noe mer med den. Om du bruker dobbeltfnutter så må PHP lete gjennom hele strengen etter variabler, noe som kan bli en tidkrevende prosess i while-looper o.l. Endret 19. oktober 2004 av Lokaltog Lenke til kommentar
???????? Skrevet 19. oktober 2004 Del Skrevet 19. oktober 2004 (endret) Må nok stille meg bak Findus her, det er nok et tips som vil ha ekstremt lite å si for ytelsen til et script og derfor ikke verdt å få folk til å endre vane. Merk at alle programmerere har sine vaner Endret 19. oktober 2004 av ???????? Lenke til kommentar
Tha_Zaynt Skrevet 19. oktober 2004 Forfatter Del Skrevet 19. oktober 2004 (endret) Kan heller ikke skjønne at sida di ser så mye dårligere ut i opera, da er det mest sansynlig DU som har koda feil. 1. Ofte er det slik at forskjellige nettlesere tolker koding forskjellig uansett hvor riktig det enn måtte være. Og da hender det ofte at siden ikke vises slik at du vil den skal vises. I mitt tilfelle var det at margin -verdien i css'n min av en eller annen grunn ble tolket annerledes i opera enn i IE og Firefox, derfor laget jeg et eget stilark til Opera.... 2. For å være helt ærlig, unnskyld uttrykket, så driter jeg mest i om jeg bruker dobbelfnutter eller ikke når det er snakk om en slik liten kodesnutt så lenge det fungerer, og ikke tar alt for lang tid å prosessere. Endret 19. oktober 2004 av Tha_Zaynt Lenke til kommentar
o2mlab Skrevet 2. november 2004 Del Skrevet 2. november 2004 er det noen mulighet og få til det samme, med plattform (operativsystem) i stedet for browser for å skille hvilket css som skal brukes? Lenke til kommentar
jorgis Skrevet 2. november 2004 Del Skrevet 2. november 2004 PS: Husk at firefox før v1.0 ikke har "Firefox" med i UA-strengen. Du bør heller bruke "gecko", siden den brukes av firefox både før og etter v1.0. Ulempen er at du tar med Mozilla Suite også, men den har så lik rendering-motor at det er stort sett greit. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå