Bekijk Volledige Versie : Style sheet te activeren aan de hand van browser detectie
picayunish
26/12/03, 17:15
Goede dag alle,
Ik probeer een style sheet te laten activeren aan de hand van browser
detectie.
Hiervoor gebruik ik de volgende php code:
unset ($BROWSER_AGENT);
unset ($BROWSER_VER);
unset ($BROWSER_PLATFORM);
function browser_get_agent () {
global $BROWSER_AGENT;
return $BROWSER_AGENT;
}
function browser_get_version() {
global $BROWSER_VER;
return $BROWSER_VER;
}
function browser_get_platform() {
global $BROWSER_PLATFORM;
return $BROWSER_PLATFORM;
}
function browser_is_mac() {
if (browser_get_platform()=='Mac') {
return true;
} else {
return false;
}
}
function browser_is_unix() {
if (browser_get_platform()=='Unix') {
return true;
} else {
return false;
}
}
function browser_is_linux() {
if (browser_get_platform()=='Linux') {
return true;
} else {
return false;
}
}
function browser_is_windows() {
if (browser_get_platform()=='Win') {
return true;
} else {
return false;
}
}
function browser_is_ie() {
if (browser_get_agent()=='IE') {
return true;
} else {
return false;
}
}
function browser_is_netscape() {
if (browser_get_agent()=='MOZILLA') {
return true;
} else {
return false;
}
}
/*
Determine browser and version
*/
if (ereg( 'MSIE ([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version)) {
$BROWSER_VER=$log_version[1];
$BROWSER_AGENT='IE';
print (" <link href='ie.css' rel='stylesheet' type='text/css'>\n");
} elseif (ereg( 'Opera ([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version)) {
$BROWSER_VER=$log_version[1];
$BROWSER_AGENT='OPERA';
print (" <link href='opera.css' rel='stylesheet' type='text/css'>\n");
} elseif (ereg(
'Mozilla/([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version)) {
$BROWSER_VER=$log_version[1];
$BROWSER_AGENT='MOZILLA';
print (" <link href='gecko.css' rel='stylesheet' type='text/css'>\n");
} else {
$BROWSER_VER=0;
$BROWSER_AGENT='OTHER';
print (" <link href='other.css' rel='stylesheet' type='text/css'>\n");
}
Ben ik op de goede weg of moet er nog wat aangepast worden?
Nog een prettige kerst.
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Rene Pijlman
26/12/03, 17:15
picayunish:
>Ben ik op de goede weg
Welja.
>of moet er nog wat aangepast worden?
Hoezo?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
picayunish
26/12/03, 17:30
Rene Pijlman schreef:
> picayunish:
>
>>of moet er nog wat aangepast worden?
>
>
> Hoezo?
Sorry ik was een beetje te kort me mijn vraag.
Ik bedoel of de script bijv. een style sheet wordt geactiveerd als er
een bezoeker een mac, unix of een linux als os heeft?
Of kan ik wat functies achterwege laten?
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Ronald Klip
26/12/03, 17:45
picayunish schreef:
>
> Ik probeer een style sheet te laten activeren aan de hand van browser
> detectie.
> Hiervoor gebruik ik de volgende php code:
<snip>
Met jouw script heb je vier versies van het stylesheet nodig. Dat
maakt onderhoud onnodig complex. Slimmer is om 1 algemeen stylesheet te
maken, en eventuele workarounds voor IE in een apart stylesheet te
plaatsen dat je tussen IE's conditional comments opvraagt.
--
groet, Ronald
picayunish
26/12/03, 18:15
Ronald Klip schreef:
> picayunish schreef:
>
>>Ik probeer een style sheet te laten activeren aan de hand van browser
>>detectie.
>>Hiervoor gebruik ik de volgende php code:
>
>
> <snip>
>
> Met jouw script heb je vier versies van het stylesheet nodig. Dat
> maakt onderhoud onnodig complex. Slimmer is om 1 algemeen stylesheet te
> maken, en eventuele workarounds voor IE in een apart stylesheet te
> plaatsen dat je tussen IE's conditional comments opvraagt.
Daar heb je gelijk aan.
Ik wil voor elke browser een andere precentatie maar de indeling is
gelijke aan alle browsers. Ik bedoel de achtergrond en lettertype voor
elke browser verschillend en de posities van bijv. titel, menu en tekst
zijn gelijk voor elke browser.
Daarom dacht ik aan de browser detectie script.
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Daniel Tryba
27/12/03, 20:00
picayunish <e_vdvaart@yahoo.co.uk> wrote:
> Ik wil voor elke browser een andere precentatie maar de indeling is
> gelijke aan alle browsers. Ik bedoel de achtergrond en lettertype voor
> elke browser verschillend en de posities van bijv. titel, menu en tekst
> zijn gelijk voor elke browser.
Waarom zou je dat uberhaupt willen?
> Daarom dacht ik aan de browser detectie script.
Het detecteren van browsers aan de hand van de UA lijkt me niet de beste
methode om dat te doen. Zoiets kan je veel beter clientside doen IMHO
(maar persoonlijk zou ik het helemaal niet doen).
--
Daniel Tryba
picayunish
27/12/03, 21:00
Daniel Tryba wrote:
> picayunish <e_vdvaart@yahoo.co.uk> wrote:
>
>>Ik wil voor elke browser een andere precentatie maar de indeling is
>>gelijke aan alle browsers. Ik bedoel de achtergrond en lettertype voor
>>elke browser verschillend en de posities van bijv. titel, menu en tekst
>>zijn gelijk voor elke browser.
>
> Waarom zou je dat uberhaupt willen?
Oh, gewoon een idee om verschillende browser met een andere style sheet
te hebben i.p.v een gezamelijke style sheet.
>>Daarom dacht ik aan de browser detectie script.
>
> [snip]
> Zoiets kan je veel beter clientside doen IMHO.
Waarom clientside, wordt de pagina niet te groot voor om in de browser
te laden?
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Daniel Tryba
27/12/03, 21:15
picayunish <e_vdvaart@yahoo.co.uk> wrote:
>>>Ik wil voor elke browser een andere precentatie maar de indeling is
>>>gelijke aan alle browsers. Ik bedoel de achtergrond en lettertype voor
>>>elke browser verschillend en de posities van bijv. titel, menu en tekst
>>>zijn gelijk voor elke browser.
>>
>> Waarom zou je dat uberhaupt willen?
>
> Oh, gewoon een idee om verschillende browser met een andere style sheet
> te hebben i.p.v een gezamelijke style sheet.
Waarom wil je per browser verschillende stylesheets?
>>>Daarom dacht ik aan de browser detectie script.
>>
>> [snip]
>> Zoiets kan je veel beter clientside doen IMHO.
>
> Waarom clientside,
Omdat liegen mbv de UA string wel uiterst eenvoudig is. Een ander
voorbeeld is dat je bv voor je Opera regexp uitgaat van versies 0.00 t/m
9.99. Wat ga je doen bij Opera 10.001? Hoe herken je een embedded Opera
(Zaurus PDA of Nokia telefoon)?
> wordt de pagina niet te groot voor om in de browser te laden?
Van die paar regels js? Dacht het niet.
--
Daniel Tryba
picayunish
27/12/03, 22:15
Daniel Tryba wrote:
> picayunish <e_vdvaart@yahoo.co.uk> wrote:
>>
>>Oh, gewoon een idee om verschillende browser met een andere style sheet
>>te hebben i.p.v een gezamelijke style sheet.
>
> Waarom wil je per browser verschillende stylesheets?
Ik wil nl. per browser een andere achtergrond kleur, andere lettertype
en grote laten zien.
>>>>Daarom dacht ik aan de browser detectie script.
>>>
>>>[snip]
>>>Zoiets kan je veel beter clientside doen IMHO.
>>
>>Waarom clientside,
>
> Omdat liegen mbv de UA string wel uiterst eenvoudig is. Een ander
> voorbeeld is dat je bv voor je Opera regexp uitgaat van versies 0.00 t/m
> 9.99. Wat ga je doen bij Opera 10.001?
Dacht aan om eventueel volgende aan te passen.
([0-99].[0-9]{1,4})
Nog bedankt voor de tip. ;-)
> Hoe herken je een embedded Opera (Zaurus PDA of Nokia telefoon)?
Wat is embedded Opera?
Wat betreft PDA's en bijv. Nokia telefoon valt in de categorie andere
UA's. Zoals een text-borwser.
>>wordt de pagina niet te groot voor om in de browser te laden?
>
> Van die paar regels js? Dacht het niet.
Klinkt interesant.
Ik hoop geen Cookies, daar houd ik zelf niet.
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Daniel Tryba
28/12/03, 06:45
picayunish <e_vdvaart@yahoo.co.uk> wrote:
>> Waarom wil je per browser verschillende stylesheets?
>
> Ik wil nl. per browser een andere achtergrond kleur, andere lettertype
> en grote laten zien.
Dat had j e al gezegt, maar waarom wil je dat? Ben je bang dat mijn
standaard fonts niet goed leesbaar zijn (ik gebruik bij voorkeur Opera
met Mozilla als backup indien er een plugin noodzakelijk is)?
>>>Waarom clientside,
>>
>> Omdat liegen mbv de UA string wel uiterst eenvoudig is. Een ander
>> voorbeeld is dat je bv voor je Opera regexp uitgaat van versies 0.00 t/m
>> 9.99. Wat ga je doen bij Opera 10.001?
>
> Dacht aan om eventueel volgende aan te passen.
> ([0-99].[0-9]{1,4})
>
> Nog bedankt voor de tip. ;-)
Tijd dat om je reguleire expressie kennis op te poetsen zou ik zeggen :)
>> Hoe herken je een embedded Opera (Zaurus PDA of Nokia telefoon)?
>
> Wat is embedded Opera?
Zie oa:
http://www.opera.com/products/smartphone/
http://www.opera.com/products/itv/
http://www.sharp.co.uk/zaurus/spec/spec.htm
> Wat betreft PDA's en bijv. Nokia telefoon valt in de categorie andere
> UA's. Zoals een text-borwser.
Helaas, je UA sniffer heeft ze al ingedeelt bij de normale Opera's. Zo
zou je ook konqueror bij de geckos indelen (samen met het overgrote deel
van alle browsers schat ik) terwijl dat een khtml variant is. Maar zo
plaats je ook Opera in "IE mode" (afaik de default) in de verkeerde
category (IE).
Voor de mobielen is overigens wel een lijstje UAs te vinden:
http://www.mobileopera.com/reference/general
Het is toch wel grappig dat je voor 1 browser variante al meerdere
fouten in je sniffer hebt...
>>>wordt de pagina niet te groot voor om in de browser te laden?
>>
>> Van die paar regels js? Dacht het niet.
>
> Klinkt interesant.
Een voorbeeld welke ik zo even kon vinden:
http://www.quirksmode.org/js/detect.html
--
Daniel Tryba
picayunish
28/12/03, 11:00
Daniel Tryba wrote:
> picayunish <e_vdvaart@yahoo.co.uk> wrote:
>
>>>Waarom wil je per browser verschillende stylesheets?
>>
>>Ik wil nl. per browser een andere achtergrond kleur, andere lettertype
>>en grote laten zien.
>
>
> Dat had j e al gezegt, maar waarom wil je dat? Ben je bang dat mijn
> standaard fonts niet goed leesbaar zijn (ik gebruik bij voorkeur Opera
> met Mozilla als backup indien er een plugin noodzakelijk is)?
Dat hoor je me ook niet zeggen, dat je eigen fonts niet leesbaar is.
Ach laat ook maar.
>>>>Waarom clientside,
>>>
>>>Omdat liegen mbv de UA string wel uiterst eenvoudig is. Een ander
>>>voorbeeld is dat je bv voor je Opera regexp uitgaat van versies 0.00 t/m
>>>9.99. Wat ga je doen bij Opera 10.001?
>>
>>Dacht aan om eventueel volgende aan te passen.
>>([0-99].[0-9]{1,4})
Een klein correctie.
([0-9]{1,3}.[[0-9]{1,4})
Nu kun je zeggen van versie 0 t/m 999.9999
> Tijd dat om je reguleire expressie kennis op te poetsen zou ik zeggen :)
Dat kun je inderdaad zeggen.
>>>Hoe herken je een embedded Opera (Zaurus PDA of Nokia telefoon)?
>>
>>Wat is embedded Opera?
>
> Zie oa:
> http://www.opera.com/products/smartphone/
> http://www.opera.com/products/itv/
> http://www.sharp.co.uk/zaurus/spec/spec.htm
Dat is erg interessant.
Ik wist niet dat Opera wordt gebruikt in mobieltjes en PDA's.
>>Wat betreft PDA's en bijv. Nokia telefoon valt in de categorie andere
>>UA's. Zoals een text-borwser.
>
>
> Helaas, je UA sniffer heeft ze al ingedeelt bij de normale Opera's. Zo
> zou je ook konqueror bij de geckos indelen (samen met het overgrote deel
> van alle browsers schat ik) terwijl dat een khtml variant is. Maar zo
> plaats je ook Opera in "IE mode" (afaik de default) in de verkeerde
> category (IE).
>
> Voor de mobielen is overigens wel een lijstje UAs te vinden:
> http://www.mobileopera.com/reference/general
>
> Het is toch wel grappig dat je voor 1 browser variante al meerdere
> fouten in je sniffer hebt...
Volgens mij gaat bij iedereen die dit soort sniffer scripts gebruiken fout.
>>>>wordt de pagina niet te groot voor om in de browser te laden?
>>>
>>>Van die paar regels js? Dacht het niet.
>>
>>Klinkt interesant.
>
> Een voorbeeld welke ik zo even kon vinden:
> http://www.quirksmode.org/js/detect.html
Bedankt voor de linken en tips.
In andere NG zijn er veel mensen die dit soort scripts haten.
Maar ze vertellen er niet bij dat je zo'n sniffer script goed moet
defineren voor alle browsers om te kunnen gebruiken.
Nogmaals bedankt voor de wijze les.
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Nico Schuyt
28/12/03, 12:00
picayunish wrote:
> Ik probeer een style sheet te laten activeren aan de hand van browser
> detectie.
> Hiervoor gebruik ik de volgende php code:
> <snip>
Tja, server side op basis van de UA-string is onbetrouwbaar. Client side zit
je met die 10-15% bezoekers met JS inactief.
Maar waarom zou je het ueberhaupt willen?? Er zijn zoveel leukere en
nuttiger dingen te doen met PHP :-)
Groet, Nico
Daniel Tryba
28/12/03, 15:00
picayunish <e_vdvaart@yahoo.co.uk> wrote:
>>>Ik wil nl. per browser een andere achtergrond kleur, andere lettertype
>>>en grote laten zien.
>>
>>
>> Dat had j e al gezegt, maar waarom wil je dat? Ben je bang dat mijn
>> standaard fonts niet goed leesbaar zijn (ik gebruik bij voorkeur Opera
>> met Mozilla als backup indien er een plugin noodzakelijk is)?
>
> Dat hoor je me ook niet zeggen, dat je eigen fonts niet leesbaar is.
> Ach laat ook maar.
Niet zo snel opgeven! Een ander achtergrondplaatje kan ik me nog wel wat
bij voorstellen, maar waarom je verschillende browsers verschillende
fonts wilt voeren is me een raadsel. IMHO is daar geen enkele reden
voor en als jij me niet kan uitleggen wat je wilt bereiken moet je
wellicht je hele plan eens onder de loep nemen...
[knip]
> Ik wist niet dat Opera wordt gebruikt in mobieltjes en PDA's.
En niet alleen Opera, Pocket IE beweerd een MSIE te zijn en dus maak je
daar de zelfde fout.
[knip]
>> Het is toch wel grappig dat je voor 1 browser variante al meerdere
>> fouten in je sniffer hebt...
>
> Volgens mij gaat bij iedereen die dit soort sniffer scripts gebruiken fout.
Dat is mijn vermoeden ook.
[knip]
> In andere NG zijn er veel mensen die dit soort scripts haten.
> Maar ze vertellen er niet bij dat je zo'n sniffer script goed moet
> defineren voor alle browsers om te kunnen gebruiken.
Maar ik vertel je toch ook niet dat je je sniffer goed moet
configureren, ik probeer je er zelfs van te weerhouden om zoiets te
gebruiken :)
--
Daniel Tryba
picayunish
28/12/03, 15:30
Daniel Tryba wrote:
> picayunish <e_vdvaart@yahoo.co.uk> wrote:
>
>>>>Ik wil nl. per browser een andere achtergrond kleur, andere lettertype
>>>>en grote laten zien.
>>>
>>>
>>>Dat had j e al gezegt, maar waarom wil je dat? Ben je bang dat mijn
>>>standaard fonts niet goed leesbaar zijn (ik gebruik bij voorkeur Opera
>>>met Mozilla als backup indien er een plugin noodzakelijk is)?
>>
>>Dat hoor je me ook niet zeggen, dat je eigen fonts niet leesbaar is.
>>Ach laat ook maar.
>
>
> Niet zo snel opgeven! Een ander achtergrondplaatje kan ik me nog wel wat
> bij voorstellen, maar waarom je verschillende browsers verschillende
> fonts wilt voeren is me een raadsel. IMHO is daar geen enkele reden
> voor en als jij me niet kan uitleggen wat je wilt bereiken moet je
> wellicht je hele plan eens onder de loep nemen...
Misschien was ik te enthousiast om andere lettertype per browser te
gebruiken. Blijft er alleen nog een andere achtergrond kleur,
verschillende plaatjes en verschillende lettertype kleur over.
>>Ik wist niet dat Opera wordt gebruikt in mobieltjes en PDA's.
>
>
> En niet alleen Opera, Pocket IE beweerd een MSIE te zijn en dus maak je
> daar de zelfde fout.
Okay, Opera en IE.
Welke browser komt er bij? Firebird?
[knip]
>>In andere NG zijn er veel mensen die dit soort scripts haten.
>>Maar ze vertellen er niet bij dat je zo'n sniffer script goed moet
>>defineren voor alle browsers om te kunnen gebruiken.
>
> Maar ik vertel je toch ook niet dat je je sniffer goed moet
> configureren, ik probeer je er zelfs van te weerhouden om zoiets te
> gebruiken :)
Nou je hebt me wel een slechte zondag bezorgd.
Eerst had ik een hele goede zaterdag. Naarmate veel mensen er tegen zijn
en me proberen om te praten, om de sniffer script niet te gebruiken.
Kreeg ik een hele slechte zondag gevoel ;-(
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
picayunish
28/12/03, 16:30
Daniel Tryba wrote:
>
> Maar ik vertel je toch ook niet dat je je sniffer goed moet
> configureren, ik probeer je er zelfs van te weerhouden om zoiets te
> gebruiken :)
Ik bedachte me nog om niet snifferen naar de actuele browsers, alleen
naar de categorie ze toe behoren.
Bijv.
Netscape, Mozilla, Firebird, etc. behoren tot de Gecko base.
Voor Opera op bijv. mobieltjes & PDA's behoren tot zijn grote broer
(Opera browser op PC). :-)
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction
Daniel Tryba
28/12/03, 21:30
picayunish <e_vdvaart@yahoo.co.uk> wrote:
>> En niet alleen Opera, Pocket IE beweerd een MSIE te zijn en dus maak je
>> daar de zelfde fout.
>
> Okay, Opera en IE.
> Welke browser komt er bij? Firebird?
Geen idee, ik weet dat er nog een embedded versie van konqueror is voor
ipaq/zaurus PDAs.
>> Maar ik vertel je toch ook niet dat je je sniffer goed moet
>> configureren, ik probeer je er zelfs van te weerhouden om zoiets te
>> gebruiken :)
>
> Nou je hebt me wel een slechte zondag bezorgd.
> Eerst had ik een hele goede zaterdag. Naarmate veel mensen er tegen zijn
> en me proberen om te praten, om de sniffer script niet te gebruiken.
> Kreeg ik een hele slechte zondag gevoel ;-(
Ik kan je geruststellen, ik gebruik zelf ook ergens een scriptje dat op
basis van de ua string bekende javascriptlozen als lynx/w3m (of met een
brakke implementatie (bv konqueror)) naar de https variant van een login
pagina.
--
Daniel Tryba
Daniel Tryba
28/12/03, 21:30
picayunish <e_vdvaart@yahoo.co.uk> wrote:
> Ik bedachte me nog om niet snifferen naar de actuele browsers, alleen
> naar de categorie ze toe behoren.
> Bijv.
> Netscape, Mozilla, Firebird, etc. behoren tot de Gecko base.
> Voor Opera op bijv. mobieltjes & PDA's behoren tot zijn grote broer
> (Opera browser op PC). :-)
Ik zou de mobielen toch maar indelen bij de tekstbrowsers als ik jou
was.
--
Daniel Tryba
picayunish
28/12/03, 22:00
Daniel Tryba wrote:
> picayunish <e_vdvaart@yahoo.co.uk> wrote:
>
>>Ik bedachte me nog om niet snifferen naar de actuele browsers, alleen
>>naar de categorie ze toe behoren.
>>Bijv.
>>Netscape, Mozilla, Firebird, etc. behoren tot de Gecko base.
>>Voor Opera op bijv. mobieltjes & PDA's behoren tot zijn grote broer
>>(Opera browser op PC). :-)
>
>
> Ik zou de mobielen toch maar indelen bij de tekstbrowsers als ik jou
> was.
Op deze manier?
Voor Opera:
(ereg( 'Opera/([0-6].[0-9]{1,3})',$HTTP_USER_AGENT,$log_version))
en voor Mozilla:
(ereg( 'Mozilla/([0-5].[0-9]{1,3})',$HTTP_USER_AGENT,$log_version))
--
Edwin van der Vaart
http://www.semi-conductor.nl/ Links to Semiconductors sites
http://www.evandervaart.nl/ Under construction