Browser sniffing
Inhoud |
[bewerk] Definitie
Browser sniffing is het bepalen van de gebruikte webbrowser en een aantal andere eigenschappen zoals schermgrootte, in een webpagina. Dit is soms nodig omdat de verschillende webbrowsers anders omgaan met stijl en lay-out en interactieve elementen in de HTML code. In principe zou elke browser zich moeten houden aan de W3C specificaties, maar in de praktijk voldoet geen enkele browser daar 100% aan.
Het gebruik van alleen de User agent geeft onvoldoende en onpraktische informatie. Daarom worden er aanvullende tests uitgevoerd, meestal op de capaciteiten van Javascript. Een bekende test is
Javascript-code: Browsersniffing
Wegens browser- en wikibeperkingen is het mogelijk dat dit sjabloon niet goed wordt weergegeven.
<script> if(document.all) { isIE = true; //browser is een versie van Internet Explorer } else { isIE = false; //browser is géén Internet Explorer } </script>
Het resultaat van browser sniffing is een aantal variabelen die elk een verschillend aspect van de gebruikte browser representeren. Veel gebruikte variabelen zijn bijvoorbeeld:
- isIE (geeft aan of de browser een versie van Internet Explorer is)
- isNN (geeft aan of de browser een versie van Netscape Navigator is)
- iMainVersion (hoofdversie van de browser)
De conclusie van een aantal tests kan dan zijn dat de gebruikte browser Internet Explorer versie 5 is, of Netscape versie 6. Als dat bekend is kan de gebruiker een pagina worden voorgeschoteld die aangepast is aan de beperkingen van de browser. Vaak wordt de gebruiker dan doorverwezen naar een andere speciaal voor die browser genmaakte pagina.
Er zijn een groot aantal scripts voor browser sniffing op het internet te vinden.
[bewerk] Server side sniffing
Bovenstaand voorbeeld maakt gebruikt van client-side sniffing. Dat betekent dat de code om te bepalen welke browser het is, in de browser zelf wordt uitgevoerd.
Het is ook mogelijk om op de webserver aan browser sniffing te doen, omdat de browser bij het verzoek om een pagina te tonen (http request), zelf zijn User agent meestuurt. Op de server wordt dan aan de hand van de waarde van de User agent bepaald welke browser het is.
[bewerk] Beperkingen
Browser sniffing is op zijn best een aanvullende methode om de capaciteiten van de browser te bepalen. Er zijn nog steeds websites te vinden die er van uitgaan, dat er maar twee browsers bestaan: Internet Explorer en Netscape. Als de gebruiker een andere browser gebruikt, bijvoorbeeld Opera, Safari of Mozilla Firefox, dan is er geen special pagina beschikbaar en wordt er niets of een zeer eenvoudige pagina getoond. Dit is het logische gevolg van het feit dat er met browser sniffing alleen rekening gehouden kan worden met browsers die op dat moment bestaan, er kan geen rekening worden gehouden met toekomstige browsers.
[bewerk] Alternatief
Het beste alternatief voor browser sniffing is uitsluitend testen of de in de webpagina gebruikte capaciteiten, in de browser aanwezig zijn (dat maakt de test onafhankelijk van het feit of de browser bekend is of niet) Een simpel (en heel oud) voorbeeld daarvan is bij gebruik van roll-overs (een ander plaatje tonen als de gebruiker met zijn muis over een menu-item gaat). Er waren indertijd browsers die dat niet ondersteunden, en in plaats daarvan een foutmelding gaven.
Javascript-code: Rollover scriptje
Wegens browser- en wikibeperkingen is het mogelijk dat dit sjabloon niet goed wordt weergegeven.
<script> function RollOver(oldimage, newimage) { if(document.images) { //als deze test is gepasserd, //kan de browser kan deze bewerking. document.images[oldimage].src = newimage.src; } else { //niets doen } } </script>
Ook deze methode heeft nadelen, sommige browsers passeren de test wel, maar ondersteunen de uit te voeren acties toch niet. Vooral browsers die nog sterk in ontwikkeling zijn hebben te maken met dit mankement. Deze methode geldt bovendien uitsluitend voor interactieve elementen, een foutieve interpretatie van CSS kan hiermee niet worden opgespoord.
[bewerk] Externe links
- http://www.howtocreate.co.uk/tutorials/jsexamples/sniffer.html, een voorbeeld van client-side browser sniffing
- http://www.zytrax.com/tech/web/browser_sniffing.html, een voorbeeld van server-side browser sniffing op de Apache webserver.
Webdesign | |
Opmaaktalen | HTML | XHTML | C-HTML | WML | XHTML Basic |
Design | Cascading Style Sheets | XSL-FO | XSLT |
Interactie | Document Object Model | HTML-event | HTML-scripting | JavaScript | Ajax | Dynamic HTML |
Referentie | HTML-kleuren | HTML-tags | HTML-entiteiten | HTML-events |
Details | Browser sniffing | User Agent | Cookie | Metatag | DTD | Broodkruimelnavigatie | Inline image | Java‑applet | Macromedia Flash | HTML‑formulier | Favicon | Frames | SVG | WAI |
HTML-Editors | Dreamweaver | FrontPage | Nvu | Quanta Plus |
|
|
Verwant | Wereldwijde web | Webbrowser | Webserver | Grafisch programma | Teksteditor | XML |