/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Version tjek.
Fra : Jesper Poulsen


Dato : 01-12-05 19:27

Hej
Jeg skal ha' lavet en funktion med noget PHP, som tjekker om
brugeren bruger IE eller FF. Grunden er at jeg skal ha' lavet to
css filer, da IE og FF jo ikke "virker ens" som alle nok ved :)

Hvordan skal det kodes ?

Mvh Jesper Poulsen
Side under opbygning.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Christoffer Kjeldgaa~ (01-12-2005)
Kommentar
Fra : Christoffer Kjeldgaa~


Dato : 01-12-05 19:50

Jesper Poulsen skrev:
> Jeg skal ha' lavet en funktion med noget PHP, som tjekker om
> brugeren bruger IE eller FF. Grunden er at jeg skal ha' lavet to
> css filer, da IE og FF jo ikke "virker ens" som alle nok ved :)

Det lyder umiddelbart ikke som en god ide. Hvad så hvis man ikke lige
benytter en af de to browsere du vil lave stylesheets til? Skal man så
bare præsenteres for siden uden styling?

Tricket er at lave ét stylesheet, som fungerer i de fleste nyere
browsere. Som du selv antyder er der visse differencer i
CSS-fortolkningen browserne imellem, men forskellen er alligevel ikke
større end at det vil være langt nemmere at kode sig ud af via CSS, i
stedet for at skulle til at rode rundt med noget PHP til at kontrollere
hver enkelt brugers browser (hvad i øvrigt delvist godt kan lade sig
gøre, bare for at svare på dit spørgsmål).

--
Christoffer Kjeldgaard Petersen

Andreas M. (01-12-2005)
Kommentar
Fra : Andreas M.


Dato : 01-12-05 19:53

Jesper Poulsen wrote:
> Hej
> Jeg skal ha' lavet en funktion med noget PHP, som tjekker om
> brugeren bruger IE eller FF. Grunden er at jeg skal ha' lavet to
> css filer, da IE og FF jo ikke "virker ens" som alle nok ved :)

Ved godt det ikke direkte er svar på dit spørgsmål, men er du sikker på
at din html trigger standard mode i både IE og Fx, for så er de faktisk
relativt ens i deres virkemåde.

--
Andreas M.

Kasper Johansen (01-12-2005)
Kommentar
Fra : Kasper Johansen


Dato : 01-12-05 20:28

"Jesper Poulsen" <p0ulsen90@gmail.com> skrev i en meddelelse
news:438f406a$0$15784$14726298@news.sunsite.dk...
> Hvordan skal det kodes ?

Som Christoffer skriver, så er det generelt en dårlig ide at lave to
stylesheets.


Desværre nægter Microsoft (????) åbenbart at overholde standarder, og os
programmøre/designere/whatever sidder derfor tilbage med et nyt problem, der
skal løses.

Jeg vil anbefale du laver to stylesheets. Et til Internet Explorer (vi
kommer næppe uden om de 90% der bruger det, og et stylesheet til alle de
andre).


-SÅDAN TJEKKER DU BROWSER

Tjek browseren på denne måde:

<?
$useragent = $_SERVER[HTTP_USER_AGENT];
if (strpos($useragent, "MSIE") !== false){
$tha_browser = "ie";
}else{
$tha_browser = "notie";
}
?>


-SÅDAN LAVER DU ET ENKELT STYLESHEET, DER OMGÅR PROBLEMER I IE VIA. PHP

// stylesheet.php
<?
$if_modified_since = preg_replace("/;.*$/", "", $HTTP_IF_MODIFIED_SINCE);
$mtime = filemtime($SCRIPT_FILENAME);
$gmdate_mod = gmdate("D, d M Y H:i:s", $mtime) . " GMT";

if ($if_modified_since == $gmdate_mod) {
header("HTTP/1.0 304 Not Modified");
exit;
}

header("Last-Modified: " . $gmdate_mod);
header("Content-type: text/css");
?>


Hvis du laver dit stylesheet i PHP, vil man typisk sige at det ikke vil være
en gyldig CSS-fil (Firefox vil også advare dig om det). Men det som det i
bund og grund handler om, er at sende den rigtige header til browseren. Som
du kan se her, sender jeg dette ved "Content-type: text/css", som gør at
filen læses som et stylesheet.

Derefter kommer der et nyt problem. Som udgangspunkt, vil en PHP-fil aldrig
blive cachet (den kan jo variere, og derefter sender PHP mange gange en
"no-cache"-header.

For at omgå dette, er vi nød til at sørge for at browseren cacher siden. Vi
tjekker altså om browseren, har sendt en tids-header fra filen, der
fortæller os om hvornår filen sidst er indlæst (cached).

Vi tjekker dette op mod "stylesheet.php"-changetime. Hvis tiden er ens, ved
vi at det er en "up-to-date"-cachet version, og vi afbryder scriptet efter
vi sender en "304"-header (der fortæller browseren at den bare kan bruge den
cachede version, også kaldet "not-modified").


Hele gevindsten ved dette her, er at du kan indsætte PHP-scripts i dit
stylesheet, uden at det giver problemer fra browseren (eller gør at
stylesheetet bliver genindlæst hver eneste gang, at brugeren skifter side).

Det vil sige du kan lave noget ala:

..mitelement{
<?
if ($tha_browser == "ie"){
?>left: 100px;<?
}else{
?>left: 120px;<?
}
?>
}


Du kan altså let omgå Internet Explorer's problemer (jeg benytter mig selv
af dette på flere af mine sider).



Håber du kan bruge det til noget ;)


--
Med venlig hilsen
Kasper Johansen



Erik Ginnerskov (02-12-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-12-05 01:28

Kasper Johansen wrote:

> Jeg vil anbefale du laver to stylesheets. Et til Internet Explorer (vi
> kommer næppe uden om de 90% der bruger det, og et stylesheet til alle
> de andre).

Ja, men i omvendt rækkefølge: Et, der følger standarderne 100% og et med de
få nødvendige rettelser til IE. Sidstnevnte indsat i conditional comments,
så alle andre browsere ignorerer det:

<link href="main.css" rel="stylesheet" type="text/css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="../ie.css" />
<!-- ie.css indeholder de få nødvendige rettelser for IE -->
<![endif]-->

> -SÅDAN LAVER DU ET ENKELT STYLESHEET, DER OMGÅR PROBLEMER I IE VIA.
> PHP

> Hvis du laver dit stylesheet i PHP, vil man typisk sige at det ikke
> vil være en gyldig CSS-fil (Firefox vil også advare dig om det).

Hvorfor sidde og fedte med en css i et forkert filformat, som du endda selv
siger, at FF ikke kan lide, når det er så enkelt at lave det på den rigtige
måde?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Kasper Johansen (02-12-2005)
Kommentar
Fra : Kasper Johansen


Dato : 02-12-05 02:24

"Erik Ginnerskov" <erik@donotspammmeplease.invalid> skrev i en meddelelse
news:438f9521$0$15795$14726298@news.sunsite.dk...
> Hvorfor sidde og fedte med en css i et forkert filformat, som du endda
> selv
> siger, at FF ikke kan lide, når det er så enkelt at lave det på den
> rigtige
> måde?

Så har du det hele i en enkelt fil.

Det er ikke at fedte rundt, hvis du har styr på dine headers, så er det
faktisk ret simpelt.


Jeg vil meget gerne undgå at have to stylesheets, da det vil betyde 2
connections til eksterne filer. Igen er det ikke forkert filformat, hvis man
gør som beskrevet.

Det eneste der styrer filformatet er faktisk headers, set fra browsernes
synspunkt.


Hvis din CSS-fil er stor nok, vil det efter min mening, blive et større
arbejde at sidde og arbejde i to filer (hvor man laver rettelser til IE i
den ene), end at arbejde med det hele i enkelt fil, hvor det (igen efter min
mening) vil være mere overskueligt at se præcis hvad der sker i forhold til
en browser.


--
Med venlig hilsen
Kasper Johansen



Erik Ginnerskov (02-12-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-12-05 11:38

Kasper Johansen wrote:

> Hvis din CSS-fil er stor nok, vil det efter min mening, blive et
> større arbejde at sidde og arbejde i to filer (hvor man laver
> rettelser til IE i den ene),

Det er en forkert opfattelse. Filen med css-rettelser til IE behøver ikke af
være ret stor. Jeg kan således oplyse, at min main-css pt. er på omkring
20KB, mens min css med IE-rettelser kun er på 121 Byte.

Det drejer sig bare om at lave sin DTD sådan, at IE 6 sættes i
standards-mode. Derved vil det stort set kun være ældre IE-versioners
fejlagtige opfattelse af margin og padding, der skal tages højde for.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Christoffer (01-12-2005)
Kommentar
Fra : Christoffer


Dato : 01-12-05 22:48


"Jesper Poulsen" <p0ulsen90@gmail.com> skrev i en meddelelse
news:438f406a$0$15784$14726298@news.sunsite.dk...
> Jeg skal ha' lavet en funktion med noget PHP, som tjekker om
> brugeren bruger IE eller FF. Grunden er at jeg skal ha' lavet to
> css filer, da IE og FF jo ikke "virker ens" som alle nok ved :)
Det er korrekt, men hvis der ligges arbejde i det, så er det oftest
nødvendigt med eet stylesheet, og alternativt kan der indsættes
conditional-comments hvis IE nægter at arte sig.
Forslår at du ligger den side samt problemstilling ud til skue i
HTML-gruppen, hvor du så kommer til at spare noget arbejde senere hen, hvis
du f.eks ønsker at ændre i designet eller farverne.

> Hvordan skal det kodes ?
Med ordentlig html/css-kode

--
Christoffer



Jesper Poulsen (03-12-2005)
Kommentar
Fra : Jesper Poulsen


Dato : 03-12-05 18:22

Så er det hele blevet rettet. Jeg lyttede til jer, og lavede
koden om. Så nu kan der ikke ses forskel på IE og FF. Så det er
dejligt!
Siden vil snart komme online, men først en tur i Ris Og Ros
forummet:) Så kan I se den der - tak for jeres hjælp.

Mvh Jesper Poulsen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste