[ Pobierz całość w formacie PDF ]
.Są to cztery różne języki w jednym skrypcie.Załóżmy, że używamy Active ServerPages otwiera nam to drzwi do języków HTML, VBScript, JavaScript, JScript i SQL.Ilu akronimów potrzebujemy?Nie trzeba chyba wspominać, że szybko opracowałem własną strategię kodowania.248Wyświetlanie życzeńTeraz, kiedy lista wyboru typu życzeń jest już ustawiona, użytkownik może wyświetlić wybrane życzenia.Procedura obsługizdarzenia onChange listy wyboru wywołuje funkcję showGreeting():function showGreeting(selIdx) {if (selIdx > 0) {bRef.hideSlide("greeting" + curGreet);bRef.showSlide("greeting" + selIdx);curGreet = selIdx;}}249 Rozdział 10 - Elektroniczne życzenia: poczta elektroniczna metodą przenieś i upuśćTechniki języka JavaScript:komunikacja między ramkamiW rozdziale 1., że używaliśmy zmiennej docObj umożliwiającej nam proste odwoływa-nie się do obiektu dokumentu (parent.frames[1]).Z taką sytuacją mamy do czynieniateraz, ale odwołujemy się do okna Back.W pliku back.html zadeklarowane są zmienneużywane też w pliku font.html.Użycie zmiennej, odnoszącej się do parent.Back,upraszcza nieco pisanie kodu (zamiast parent.Back wystarczy napisać bRef) i umożli-wia łatwe używanie danych z innych ramek.Możemy sobie wyświadczyć przysługę, jeślistworzymy taką zmienną i do niej będziemy się odwoływać.Przyjrzyjmy się funkcji on-Card() z pliku front.html.Nie tylko używamy w niej bRef, ale tworzymy też dwie innezmienne podobnego typu, ref i ref2, umożliwiające odwoływanie się do wybranychwarstw.Zobaczmy, jak wygląda sama funkcja:function onCard(iconRef) {var ref = bRef.refSlide(bRef.icons[iconRef]);var ref2 = bRef.refSlide("Back");if(document.all) {if((parseInt(ref.left) >= parseInt(ref2.left)) &&(parseInt(ref.top) >= parseInt(ref2.top)) &&(parseInt(ref.left) + parseInt(ref.width) = ref2.top) &&(ref.left + ref.document.images[0].width =parseInt(parent.Back.refSlide(parent.Back.icons[iconRef]).top)) &&(parseInt(parent.Back.refSlide(parent.Back.icons[iconRef]).left) +parseInt(parent.Back.refSlide(parent.Back.icons[iconRef]).width) =parent.Back.refSlide(parent.Back.icons[iconRef]).left) &&(parent.Back.refSlide(parent.Back.icons[iconRef]).top >=parent.Back.refSlide(parent.Back.icons[iconRef]).top) &&(parent.Back.refSlide(parent.Back.icons[iconRef]).left +250parent.Back.refSlide(parent.Back.icons[iconRef]).document.images[0].width wartość ta jest zwiększana o 1, ażdojdziemy do ostatniego obrazka.Kiedy backgroundIdx osiąga wartość top.Back.backImgs.length-1,ponownie jest zerowana, dzięki czemu możemy zaczynać od początku.Teraz przyszedł czas na wykorzystanie tej świeżo uzyskanej wartości do zmiany właściwości src odpowiedniegoobiektu Image.Jako że obrazek tła był umieszczony w warstwie w celu dokładniejszego pozycjonowania, musimyróżnie odnosić się do modelu DOM Netscape Navigatora i Internet Explorera.W przypadku Internet Explorera obrazek jest uważany za właściwość obiektu dokumentu:top.Back.document.background.srcZ kolei w przypadku Netscape Navigatora odwołujemy się do obiektu dokumentu w warstwie.Ponieważ warstwanazywa się Back, dostanie się do odpowiedniego obiektu Image wygląda tak:top.Back.document.layers["Back"].document.images[0].srcKiedy odpowiednia składnia zostanie już określona, możemy ustawić ścieżkę we właściwości src obrazka backImgs,stosując backgroundIdx.Warto dodać, nie po raz pierwszy używamy takiej iteracji.Podobne przykłady znajdziemyw rozdziałach 3.i 8.Teraz użytkownik może już cyklicznie przeglądać obrazki tła potrzebujemy podobnegorozwiązania dla ikon.Tutaj właśnie użyjemy funkcji nextIcons() z wierszy 52 68:function nextIcons() {for (var i = bRef.iconNum * iconIdx; i , musimy ukryć wszystkie ikony z grupy związanej z bieżącą wartością iconIdx:for (var i = bRef.iconNum * iconIdx; i
[ Pobierz całość w formacie PDF ]