mootools - utility.js
10 kwietnia, 2007
Naszych teoretycznych rozważań na temat mootools ciąg dalszy ;) Plik utility.js wchodzący w skład jądra frameworka wydaje mi się ciekawszy od pliku moo.js, ponieważ daje nam do dyspozycji kilka ciekawych funkcji, a dodatkowo będziemy mogli sprawdzić jakiego typu przeglądarki używa osoba oglądająca stronę (nie muszę chyba pisać, że jest to dość przydatne ;) ). Ale przedtem musimy się zapoznać z funkcjami tegoż pliku.
Funkcji jest pięć - wszystkie charakteryzują się przedrostkiem "$" przed nazwą. Oto one:
- $type - zwraca typ parametru podanego jako argument tej funkcji,
- $chk - pozwala sprawdzić czy dany obiekt istnieje,
- $pick - ma za zadanie sprawdzić czy dany obiekt istnieje. Jeżeli tak to zwraca go, w przeciwnym wypadku zwróci drugi obiekt podany w parametrach funkcji,
- $random - służy do wygenerowania pseudolosowej liczby z dwóch podanych jako parametry funkcji,
- $clear - służy do likwidowania opóźnień i interwałów czasowych dla wykonywanych funkcji.
$type
Funkcja $type zwraca typ parametru podanego jako argument tej funkcji. Używamy jej w następujący sposób:
var typ = $type(obiekt);
W powyższym wypadku zmienna typ może przyjąć następujące wartości:
- element – jeśli parametr jest węzłem drzewa DOM
- textnode – gdy parametr jest węzłem tekstowym drzewa DOM
- whitespace – jeżeli parametr jest węzłem zawierającym białe znaki
- array – jeśli parametr jest tablicą
- object – wtedy gdy parametr jest obiektem
- string – gdy parametr jest ciągiem znaków
- number – jeżeli parametr jest liczbą
- boolean – jeśli parametr jest wartością logiczną
- function – kiedy parametr jest funkcją
- false - (wartość logiczna, a nie ciąg znaków) gdy parametr nie jest zdefiniowany lub nie należy do żadnego z powyższych typów.
I parę przykładów zastosowania tej funkcji:
var liczba = 20;
var typ = $type(liczba);
alert(typ);
Powyższy kod spowoduje pokazanie alertu z napisem "number".
var cos_co_nie_istnieje;
var typ = $type(cos_co_nie_istnieje);
alert(typ);
W tym wypadku pojawi się alert z napisem "false", ponieważ zmienna cos_co_nie_istnieje nie ma zdefiniowanej wartości.
var typ = $type(document);
alert(typ);
W powyższym wypadku zobaczymy alert z treścią "object".
I tak dalej... Przejdźmy do kolejnej funkcji jaką jest $chk.
$chk
Funkcja $chk pozwala sprawdzić nam czy dany obiekt istnieje lub jest zerem. Składnia funkcji jest podobna do tej z funkcji $type :
var istnieje = $chk(obiekt);
Zmienna istnieje może przyjąć w tym wypadku jedną z dwóch wartości logicznych:
- true – jeżeli obiekt istnieje lub jest zerem
- false – jeżeli obiekt nie istnieje (i nie jest zerem)
Na przykład:
var zmienna;
var istnieje = $chk(zmienna);
alert(istnieje);
W powyższym wypadku otrzymamy oczywiście alert z treścią "false".
$pick
Funkcja $pick sprawdza najpierw czy istnieje obiekt podany jako pierwszy argument funkcji. Jeżeli istnieje to jest on zwracany, inaczej zwracany jest obiekt podany jako drugi parametr.
I przykład użycia :
var zmienna1;
var zmienna2 = 2;
alert($pick(zmienna1,zmienna2));
Powyższy kod spowoduje pokazanie alertu z treścią "2".
Gdybyśmy zmienili kod na taki:
var zmienna1 = 5;
var zmienna2 = 2;
alert($pick(zmienna1,zmienna2));
To otrzymalibyśmy alert o treści "5".
$random
$random to funkcja zwracająca pseudolosową wartość z podanego w postaci dwóch argumentów przedziału. Zwracana wartość to oczywiście liczba całkowita. Składnia funkcji wygląda następująco:
var minimalna = 10;
var maksymalna = 20;
alert($random(minimalna,maksymalna));
Powyższy kod spowoduje pokazanie jako treści alertu pseudolosowej liczby z przedziału obustronnie domkniętego <10,20> .
$clear
Funkcja $clear służy do likwidowania opóźnień i interwałów czasowych dla wykonywanych funkcji. Jeśli chcemy by dana funkcja nie wykonała się z zadanym wcześniej opóźnieniem, bądź też chcemy przerwać jej regularne wykonywanie się co dany okres czasu to stosujemy wtedy właśnie funkcję $clear, której składnia wygląda następująco:
opoznienie = $clear(opoznienie);
Gdzie zmienna opóźnienie to wcześniej zadeklarowana zmienna przechowująca czas opóźnienia bądź też czas co jaki wykonuje się dana funkcja.
Sprawdzanie typu przeglądarki
I na koniec opisu pliku utility.js to co wydaje mi się najciekawszą funkcjonalnością udostępnianą przez ten plik - możliwość sprawdzenia, jakiego typu przeglądarki używa użytkownik.
Plik utility.js dodaje do obiektu window następujące właściwości:
- window.ie - przyjmuje wartość logiczną true gdy przeglądarka jest jakąkolwiek wersją IE
- window.ie6 - przyjmuje wartość logiczną true gdy przeglądarką jest IE6
- window.ie7 - przyjmuje wartość logiczną true gdy przeglądarką jest IE7
- window.khtml - przyjmuje wartość logiczną true gdy przeglądarką jest Safari lub Konqueror
- window.gecko - przyjmuje wartość logiczną true gdy przeglądarką jest Firefox, Mozilla lub inna przeglądarka oparta na Gecko
Sprawdzenie typu przeglądarki ogranicza się do wykonania operacji lub serii operacji typu:
var przegladarka = $chk(window.ie));
Jeżeli zmienna przegladarka przyjmie wartość logiczną true, oznaczać to będzie, że użytkownik korzysta z Internet Explorera. Oczywiście możemy później kontynuować to sprawdzanie poprzez dodanie kilku instrukcji warunkowych wykonywanych aż do momentu otrzymania wartości true. Jeśli chodzi o Operę to nie ma jej w tych właściwościach ponieważ renderuje ona strony bardzo podobnie do przeglądarek opartych na Gecko, więc raczej nie ma potrzeby wyróżniania jej na liście przeglądarek. Powyższe właściwości są z pewnością niezwykle przydatne gdy nasza strona korzysta z kilku arkuszy styli, lub różnych kodów JS dla różnych przeglądarek.
Komentarze do wpisu "mootools - utility.js":
1.
Lookzovt napisał(a):
08 maja 2007, 13:00:55
Drobny błąd w tekście: # window.ie – przyjmuje wartość logiczną true gdy przeglądarka jest jakąkolwiek wersją IE # window.ie6 – przyjmuje wartość logiczną true gdy przeglądarką jest IE6 # window.ie7 – przyjmuje wartość logiczną true gdy przeglądarką jest IE6
Oczywiście w drugim przypadku powinno być IE7.
BTW dzięki za kurs :-)
2.
Dziudek napisał(a):
08 maja 2007, 13:06:03
Poprawione ;) Przy kopiowaniu tekstu zapomniałem zmienić ;]
Dodaj komentarz: