![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
O ile siedzę w JS już jakiś czas, to dzisiaj nastąpił dla mnie zupełny zonk.
Mianowicie, piszę UserJS-a dla Opery do Blipa. Jako entry-point, przeciążyłem metodę Prototype'a Element.insert. Dla tych, którzy nie wiedzą, jak działa Blip - ściąga sobie AJAX-em kod JS, który operuje bezpośrednio na stronie; nie ma żadnego JSON-a, czy czegoś w stylu parsowania, ale to nie jest problem. I wszystko fajnie-cacy działa, jeżeli są to pojedyncze elementy - moje hooki nie zawodzą. Jednak problem pojawia się, gdy użytkownik korzysta z paginacji - całe drzewo jest usuwane i metoda Element.insert jest wywoływana wielokrotnie. Wówczas mój skrypt parsuje tylko pierwszy element, w dodatku wielokrotnie. Tak, jakby zmienna z uchwytem elementu była nie uaktualniana przy dodawaniu kolejnych elementów... (IMG:style_emoticons/default/dry.gif) Metoda przeciążająca:
Samo parseNode wykonuje naprawdę podstawowe operacje na DOM, ale wariuje nawet odczyt (sprawdzałem). Liczba wywołań się zgadza, ale same dane już nie - za każdym razem jest to samo albo gdzieś znikają elementy (!)... Jest to bombardowane w mniej-więcej ten sposób:
Moje pytanie - co zrobić, abym mógł manipulować obiektami DOM przy ich dodawaniu zamiast całkowitego skanowania po wykonaniu wielu operacji? edit: najciekawsza jest jednak inna rzecz, spróbowałem dojść krokami, wtf:
Kod do funkcji trafia prawidłowy. Jeżeli wyłuskam ID z kodu i odwołam się przez document.getElementById, to do funkcji zostanie dostarczony zawsze pierwszy, ten sam identyfikator. Jakby DOM nie nadążało za samym sobą...? O.o |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 16:51 |