Obiekt navigator przechowuje informacje dotyczące przeglądarki, jej nazwy, wersji, języka, systemu operacyjnego, na którym została uruchomiona, itp. Nie jest częścią specyfikacji W3C, ale większość produktów obsługuje pewien standardowy zestaw właściwości.
Właściwości obiektu navigator
Właściwości obiektu navigator zostały przedstawione w tabeli 4.7. Warto tu wspomnieć, skąd tyle opcji dotyczących nazwy i wersji. Otóż nazwa kodowa (appCodeName) to w większości popularnych przeglądarek Mozilla, jako że historycznie wywodzą się z tej rodziny i appVersion odnosi się do tego właśnie parametru. Z kolei appName to teoretycznie oficjalna nazwa, czyli np. Netscape, Microsoft Internet Explorer itd., niestety jako Netscape przedstawia się też np. Firefox, który przez firmę Netscape nie jest produkowany. Poza tym, jeśli przeglądarka umożliwia zmianę identyfikacji (jak np. Opera), to parametr ten również nie zawiera prawdziwych informacji.
Tabela 4.7. Właściwość obiektu navigator
Nazwa |
Znaczenie |
Dostępność |
appCodeName |
Nazwa kodowa przeglądarki. |
FF, IE, NN, OP |
appName |
Oficjalna nazwa przeglądarki. |
FF, IE, NN, OP |
appVersion |
Wersja kodowa przeglądarki. |
FF, IE, NN, OP |
appMinorWersion |
Podwersja przeglądarki |
IE, OP |
cookieEnabled |
Określa, czy w przeglądarce jest włączona obsługa plików cookie (true — tak, false — nie). |
FF, IE, NN, OP |
cpuClass |
Rodzina procesorów urządzenia, na którym jest uruchomiona przeglądarka. |
IE |
language |
Kod języka przeglądarki. |
FF, NN, OP |
mimetypes |
Tablica zawierająca listę typów mime obsługiwanych przez przeglądarkę. W niektórych przypadkach ta właściwość jest wartością pustą. |
FF, IE, NN, OP |
online |
Określa, czy przeglądarka pracuje w trybie online. |
FF, IE |
oscpu |
Określa system operacyjny, na którym jest uruchomiona przeglądarka. |
FF, NN |
platform |
Określa platformę systemową, dla której jest przeznaczona przeglądarka. |
FF, IE, NN, OP |
plugins |
Tablica zawierająca odniesienia do rozszerzeń zainstalowanych w przeglądarce. |
FF, IE, NN, OP |
product |
Nazwa produktowa przeglądarki (np. Gecko). |
FF, NN |
productSub |
Wersja produktowa przeglądarki. |
FF, NN |
systemLanguage |
Język systemu operacyjnego, w którym jest uruchomiona przeglądarka. |
IE |
userAgent |
Ciąg wysyłany przez przeglądarkę do serwera jako nagłówek HTTP_USER_AGENT. Z reguły pozwala na dokładną identyfikację przeglądarki. |
FF, IE, NN, OP |
userLanguage |
Język użytkownika (z reguły wersja językowa przeglądarki). |
IE, OP |
vendor |
Dostawca (producent) przeglądarki. |
FF, NN |
vendorSub |
Numer produktu według producenta (np. 5.1, 6.0). |
FF, NN |
Z tego też względu podczas identyfikacji przeglądarki najczęściej korzysta się z ciągu zapisanego we właściwości userAgent, w którym najczęściej można odnaleźć wszystkie niezbędne informacje, nawet jeśli identyfikacja produktu została zmieniona w jego opcjach konfiguracyjnych. Przykłady takich ciągów to:
mozilla/5.0 (windows; u; windows nt 5.0; en-us; rv:1.7.5) gecko/20050729 netscape/8.0.3.3
mozilla/5.0 (compatible; konqueror/3.4; linux) khtml/3.4.0
mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; pl) opera 8.02
mozilla/5.0 (x11; u; linux i686; pl-pl; rv:1.7.8) gecko/20050524 fedora/1.0.4-4 firefox/1.0.4
mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; .net clr 1.1.4322; fdm)
Dokładniejsze oględziny pokazują, że można w nich wyróżnić pewne elementy charakterystyczne. Najłatwiej wyodrębnić po prostu nazwy: Firefox, Konqueror, Netscape, Opera i MSIE. To już pozwala napisać skrypt, który z dużym prawdopodobieństwem określi, z jakim produktem mamy do czynienia. Został on zaprezentowany na listingu 4.20.
Listing 4.20. Rozpoznawanie typu przeglądarki
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Moja strona WWW</title>
</head>
<body>
<script type="text/javascript">
var agent = navigator.userAgent.toLowerCase();
var nazwa = "nieznany";
if(agent.indexOf('firefox') != -1){
nazwa = "Firefox";
}
if(agent.indexOf('opera') != -1){
nazwa = "Opera";
}
else if(agent.indexOf('konqueror') != -1){
nazwa = "Konqueror";
}
else if(agent.indexOf('netscape') != -1){
nazwa = "Netscape Navigator";
}
else if(agent.indexOf('msie') != -1){
nazwa = "Internet Explorer";
}
document.write("Twoja przeglądarka to: " + nazwa);
</script>
</body>
</html>
Tekst znajdujący się we właściwości userAgent jest konwertowany za pomocą funkcji toLowerCase, tak aby zawierał włącznie małe litery (co ułatwia dalsze operacje), i jest zapisywany w pomocniczej zmiennej agent. Następnie za pomocą metody indexOf jest sprawdzane, czy w ciągu zapisanym w agent znajduje się któreś ze słów charakterystycznych dla jednej z rozpoznawanych przeglądarek. Jeśli tak, zmiennej nazwa jest przypisywana nazwa rozpoznanego produktu. Nazwa ta jest wyświetlana na ekranie za pomocą instrukcji document.write.
W podobny sposób można rozpoznać typ systemu operacyjnego, z którego korzysta użytkownik przeglądarki. Jak to zrobić, obrazuje listing 4.21.
Listing 4.21. Rozpoznawanie typu systemu operacyjnego
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Moja strona WWW</title>
</head>
<body>
<script type="text/javascript">
var agent = navigator.userAgent.toLowerCase();
var nazwa = "nieznany";
if(agent.indexOf('windows') != -1){
nazwa = "Windows";
}
if(agent.indexOf('linux') != -1){
nazwa = "Linux";
}
else if(agent.indexOf('mac') != -1){
nazwa = "MacOS";
}
document.write("Twój system to: " + nazwa);
</script>
</body>
</html>
Metody obiektu navigator
Metoda javaEnabled
Wywołanie: javaEnabled()
Dostępność: FF, IE3, NN2, OP7
Metoda javaEnabled zwraca wartość true, jeżeli dana przeglądarka obsługuje Javę, lub false w przeciwnym razie.