Nasze strony wykorzystują pliki cookies. Używamy cookies i podobnych m.in. w celach reklamowych i statystycznych oraz w celu dostosowania serwisów do potrzeb użytkowników. Mogą też stosować je nasi reklamodawcy, firmy badawcze oraz dostawcy aplikacji. W przeglądarce można zmienić ustawienia dotyczące cookies. Więcej informacji. Jeśli nie wyrażasz zgody, opuść tę stronę.

Obiekt Event

Forum dyskusyjne poświęcone zagadnieniom związanym z językami JavaScript, VBScript i podobnym

Moderator: Grupa pościgowa ;-)

Obiekt Event

Postprzez Seth_ » 18 marca 2004, o 02:03

Witam
Moj problem dotyczy skryptu ktory koloruje linki. Calosc znajduje sie na http://seth.ys.pl/skrypt/skrypt.txt . Dostaje komunikat "Wymagany jest obiekt". Wrzucilem wiec to wszystko do debuggera ktory wykazal bledy w liniach if ((srcElement.tagName == "A" && autoFade) || srcElement.className == "fade" || (sloppyClass &&
srcElement.className.indexOf("fade") != -1))
.
Podpatrzylem sobie srcElement i okazalo sie ze wynosi null . Czyli rozumiem skad sie bierze blad:nie ma obiektu. Jednak wydaje mi sie to niemozliwe bo w kodzie jest wyraznie document.onmouseover = domouseover; czyli jesli dobrze rozumiem to kazdy ruch myszki na dokumencie powoduje ze Event istnieje. Blad nie wyskakuje po konkretnym dzialaniu;raz jest a raz go nie ma;raz jest po sekundzie a raz po minucie.I co wiecej pokazuje mi sie on tylko na jednej stronie(ale sprawdzalem ją i nie ma tam zadnych niepokojacych rzeczy).
Wiec mam pytanie czy ktokolwiek wie o co tu moze chodzic? Czy jest mozliwe zeby zawartosc strony w jakis sposob powodowala ze Event "znika"?
Z gory dziekuje za wszelkie sugestie.
Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez Wydra707 » 18 marca 2004, o 16:07

Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Re: Obiekt Event

Postprzez lockoom » 18 marca 2004, o 16:13

lockoom
Super spec!
Super spec!
 
Posty: 999
Dołączył(a): 30 września 2002, o 19:46

Postprzez Seth_ » 18 marca 2004, o 17:37

Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez lockoom » 18 marca 2004, o 20:08

Ostatnio edytowano 18 marca 2004, o 23:43 przez lockoom, łącznie edytowano 1 raz
lockoom
Super spec!
Super spec!
 
Posty: 999
Dołączył(a): 30 września 2002, o 19:46

Postprzez Seth_ » 18 marca 2004, o 22:53

Dzieki :) Wlasnie takiego kodu mi bylo trzeba. Z tym, ze zamiast onload = init; w skrypcie wstawilem wszedzie onload do <body> bo na niektorych podstronach kolorowanie nie dzialalo.
I teraz juz nie dostaje bledu ze wymagany jest obiekt ale ze "brak definicji 'ms__idX' ", gdzie X jest zupelnie dowolna liczba. I dzieje sie to przy najechaniu na emotikona. Debuger tym razem nie pokazuje zupelnie nic. Czyli zaczynam cos weszyc bo emotikon jest wstawiany do pola textowego funkcja javascriptu. Przejrzalem ta funkcje i jednak ciagle nie moge dostrzec co moze byc przyczyna konfliktu :( W skrypcie kolorowania linku jest cos takiego jak uniqueID ale nie jestem pewny czy komunikat wlasnie tego dotyczy. Niby to sie juz wszystko konkretyzuje i widac gdzie cos jest nie tak ale ciagle nie wiem co.Zalamac sie idzie
Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez Seth_ » 19 marca 2004, o 00:55

Ok juz mam spokoj. Emoty dalem jako obrazki z onclickiem a nie jako linki. I to mi powinno wystarczyc mimo ze ciagle nie wiem czemu mi sie pokazywaly bledy :roll:
Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez Wydra707 » 19 marca 2004, o 02:59

Przyczyną Twoich pierwszych kłopotów było (a może wciąż jest) pole NAME="znak". Błąd pojawiał się przy szybkim przesuwaniu nad nim kursora (dlaczego szybkim, napiszę za chwilę). Inny przypadek, to sytuacja, gdy kursor był nad treścią tego pola (zmienia się na kursor tekstowy) i wywoływałem okienko alertu. Trzeci przypadek to wywołanie nad treścią pola menu kontekstowego. Tu nie ma komunikatu błędu, ale zobacz gdzie pokazuje się menu!

Trafiłeś na specyficzną cechę obiektów INPUT z atrybutem DISABLED. Jeśli taki obiekt zawiera treść (VALUE), zachowuje się ona tak, jakby nie istniała na rysunku strony. Gdy nad treścią (znakami w polu) wywołasz niektóre zdarzenia, obiekt event nie będzie prawidłowo uaktualniony (srcElement=undefined). A zatem obiekt event istniał, tylko pusta była właściwość srcElement i stąd błąd.

Ponieważ uaktualnienie obiektu event wymaga czasu, błąd występował tylko przy szybkich ruchach kursora nad polem. Pole ma obramowanie i wąski padding. Gdy kursor przesuwa się wolno, parametry zdarzenia zostają odczytane na granicy pola (poza treścią pola) i wszystko jest OK. Gdy kursor porusza się szybko, zdąży przesunąć się nad treść zanim przeglądarka odczyta jego pozycję. Wtedy okazuje się, że obiekt pod kursorem nie istnieje i srcElement=undefined... Jeśli ustawisz temu polu padding:0px; border:none; błąd będzie występował zawsze przy wejściu nad pole od lewej i z góry.

Wszystkie te problemy wiążą się z bąblowaniem zdarzeń i jeśli przesunąłeś wywołanie funkcji z obiektu document do obiektów A, to błędy będą występowały rzadziej (pozostanie problem z menu kontekstowym).

Rozwiązaniem jest usunięcie atrybutu DISABLED. Ewentualnie objęcie pola kontenerem SPAN i wstawienie tam atrybutu:

<SPAN DISABLED><INPUT TYPE=...></SPAN>

Co do Twojego problemu z id to... jest już troszkę za późno, aby mysleć :-)

Pozdrawiam
Paweł Rajewski
Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez Seth_ » 19 marca 2004, o 15:50

Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez Wydra707 » 19 marca 2004, o 19:20

Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez Seth_ » 19 marca 2004, o 21:46

Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez lockoom » 20 marca 2004, o 21:31

Jakbyś jeszcze poprawił to czym wcześniej pisałem "&raquo" na "&raquo;", bo to naprawdę w Operze i Mozilli psuje wygląd.
lockoom
Super spec!
Super spec!
 
Posty: 999
Dołączył(a): 30 września 2002, o 19:46

Postprzez Seth_ » 21 marca 2004, o 01:16

Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Postprzez lockoom » 21 marca 2004, o 17:47

Temat mnie "troszkę" zainteresował i postanowiłem napisać własny skrypt. Mój jest oczywiście lepszy ;)
Oki, teraz serio Twój skrypt nie działa w alternatywnych przeglądarkach, mój działa w IE4+, Operze 6+ (5+? 4+?), Netscape 6+ i Mozilli. Co mi się nie podobało w tym użytym przez Ciebie to, oprócz tego o czym wspomniał Wydra i co naprawiłeś, to fakt, że kolor jest obliczany w momencie jego ustawiania. W moim skrypcie najpierw tworzona jest tablica zawierająca wszyskie stany pośrednie i później już tylko odwołuję się do jej elementów.

Skrypt można zobaczyć w działaniu tutaj.

Wszelkie uwagi oczywiście mile widziane.

/edit: Wersja 1.1 na serwerze :)
lockoom
Super spec!
Super spec!
 
Posty: 999
Dołączył(a): 30 września 2002, o 19:46

Postprzez Seth_ » 22 marca 2004, o 00:24

Seth_
Jeszcze się uczę
Jeszcze się uczę
 
Posty: 15
Dołączył(a): 18 marca 2004, o 01:31

Następna strona

Powrót do Języki JavaScript i VBScript

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników

cron