eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.www › Pytanie o JS: addEventListener()
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2015-02-12 13:14:23
    Temat: Pytanie o JS: addEventListener()
    Od: Marek <p...@s...com>

    Witam,

    Jaka jest praktyczna różnica w stosowaniu:

    addEventListener(event, handler, true);

    vs

    addEventListener(event, handler, false);

    Zauważyłem, że czasem w przykładach podkreślane jest aby ustawić ten
    ostatni parametr na konkretną wartość. Jednakże jakie ma to praktyczne
    znaczenie? Nie wiem.

    --
    Pozdrawiam,
    Marek


  • 2. Data: 2015-02-12 17:43:36
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Cezary Tomczyk <c...@g...com>

    On 2015-02-12 13:14, Marek wrote:
    > Witam,
    >
    > Jaka jest praktyczna różnica w stosowaniu:
    >
    > addEventListener(event, handler, true);
    >
    > vs
    >
    > addEventListener(event, handler, false);
    >
    > Zauważyłem, że czasem w przykładach podkreślane jest aby ustawić ten
    > ostatni parametr na konkretną wartość. Jednakże jakie ma to praktyczne
    > znaczenie? Nie wiem.

    Osobiście nigdy nie miałem potrzeby użycia "captures" w wersji "true".

    Znalazłem ciekawy wątek wokół "captures":
    http://stackoverflow.com/questions/7398290/unable-to
    -understand-usecapture-attribute-in-addeventlistener

    --
    Cezary Tomczyk
    http://www.ctomczyk.pl/


  • 3. Data: 2015-02-12 22:10:57
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Marek <p...@s...com>

    W dniu 2015-02-12 o 17:43, Cezary Tomczyk pisze:

    > Osobiście nigdy nie miałem potrzeby użycia "captures" w wersji
    > "true".

    No właśnie w tym rzecz. Sam nie znalazłem jeszcze praktycznego
    wykorzystania. Zwykle interesuje nas zdarzenie na danym elemencie.
    Odwrócona kolejność taka, że najpierw odezwie się document gdy klikniemy
    w nim button jest średnio przydatna. Też nie bardzo znajduję potrzebę
    korzystania z tego mechanizmu i stąd pytanie

    >
    > Znalazłem ciekawy wątek wokół "captures":
    > http://stackoverflow.com/questions/7398290/unable-to
    -understand-usecapture-attribute-in-addeventlistener
    >

    A tak, dziękuję. Widziałem diagram na W3C i fajnie, że jest tu również
    JS do przetrenowania. Co gorsze, pobawiłem się tym i ...kolejna, tym
    razem niejasność powstała. Zaskoczyło mnie działanie stopPropagation()

    w przykładzie z w/w wątku: http://jsfiddle.net/sc5Xa/2/

    Odkomentowałem przy "parent capture". Tak jak się spodziewałem - żadne
    kolejne zdarzenie nie zaszło. Postanowiłem więc przetestować drugie
    zdarzenie "children capture" i teraz tam zatrzymałem propagację. Ze
    zdziwieniem ... zablokowałem w ten sposób jedynie "parent bubble".
    Dlaczego "children bubble" nie zostało odcięte przez stopPropagation() w
    "children capture"???


    --
    Pozdrawiam,
    Marek


  • 4. Data: 2015-02-12 23:26:45
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Cezary Tomczyk <c...@g...com>

    On 2015-02-12 22:10, Marek wrote:
    > W dniu 2015-02-12 o 17:43, Cezary Tomczyk pisze:
    >
    >> Osobiście nigdy nie miałem potrzeby użycia "captures" w wersji
    >> "true".
    >
    > No właśnie w tym rzecz. Sam nie znalazłem jeszcze praktycznego
    > wykorzystania. Zwykle interesuje nas zdarzenie na danym elemencie.
    > Odwrócona kolejność taka, że najpierw odezwie się document gdy klikniemy
    > w nim button jest średnio przydatna. Też nie bardzo znajduję potrzebę
    > korzystania z tego mechanizmu i stąd pytanie

    Wydaje mi się, że to pozostałość historyczna kiedy jeszcze Netscape i IE
    miały różne koncepcje event delegation. Tutaj
    http://www.nczonline.net/blog/2009/06/30/event-deleg
    ation-in-javascript/
    jest to ładnie opisane.

    >> Znalazłem ciekawy wątek wokół "captures":
    >> http://stackoverflow.com/questions/7398290/unable-to
    -understand-usecapture-attribute-in-addeventlistener
    >>
    >>
    >
    > A tak, dziękuję. Widziałem diagram na W3C i fajnie, że jest tu również
    > JS do przetrenowania. Co gorsze, pobawiłem się tym i ...kolejna, tym
    > razem niejasność powstała. Zaskoczyło mnie działanie stopPropagation()
    >
    > w przykładzie z w/w wątku: http://jsfiddle.net/sc5Xa/2/
    >
    > Odkomentowałem przy "parent capture". Tak jak się spodziewałem - żadne
    > kolejne zdarzenie nie zaszło. Postanowiłem więc przetestować drugie
    > zdarzenie "children capture" i teraz tam zatrzymałem propagację. Ze
    > zdziwieniem ... zablokowałem w ten sposób jedynie "parent bubble".
    > Dlaczego "children bubble" nie zostało odcięte przez stopPropagation() w
    > "children capture"???

    Klucz to zagadaki jest tutaj
    http://www.w3.org/TR/DOM-Level-3-Events/#event-flow

    + https://msdn.microsoft.com/en-us/library/ie/ff975245
    (v=vs.85).aspx

    "Events are handled in two phases: capturing and bubbling. During the
    capturing phase, events are dispatched to parent objects before they are
    dispatched to event targets that are lower in the object hierarchy.
    During the bubbling phase, events are dispatched to target elements
    first and then to parent elements."

    --
    Cezary Tomczyk
    http://www.ctomczyk.pl/


  • 5. Data: 2015-02-13 09:28:37
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Marek <p...@s...com>

    W dniu 2015-02-12 o 23:26, Cezary Tomczyk pisze:
    >
    > Klucz to zagadaki jest tutaj
    > http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
    >
    > + https://msdn.microsoft.com/en-us/library/ie/ff975245
    (v=vs.85).aspx
    >
    > "Events are handled in two phases: capturing and bubbling. During the
    > capturing phase, events are dispatched to parent objects before they are
    > dispatched to event targets that are lower in the object hierarchy.
    > During the bubbling phase, events are dispatched to target elements
    > first and then to parent elements."
    >

    No ale z tego nie wynika jasno, że stopPropagation() w pewnych
    okolicznościach nie działa. Posługując się diagramem z W3C, gdy np.
    klikamy na <td>, zdarzenie zaczyna wędrować najpierw w capturing phase
    począwszy od window, aż do targeta a potem z powrotem. Wyobrażałem
    sobie, że jeśli przerwiemy ten przebieg gdziekolwiek w capturing phase,
    to następny w kolejce element nie dostanie informacji o tym, że takie
    zdarzenie miało miejsce. W opisie nie jest napisane, że stoPropadation()
    zadziała z opóźnieniem.

    --
    Pozdrawiam,
    Marek


  • 6. Data: 2015-02-13 14:23:45
    Temat: Re: Pytanie o JS: addEventListener()
    Od: NotBear <p...@i...pl>

    W dniu 2015-02-12 o 13:14, Marek pisze:
    > Witam,
    >
    > Jaka jest praktyczna różnica w stosowaniu:
    >
    > addEventListener(event, handler, true);

    Praktyczna jest taka, ze IE<9 nie umie tak.

    Dlatego powszechna praktyka jest rejestrowanie zdarzen z wykorzystaniem
    fazy bubblingu addEventListener(event, handler, false). Aktualnie trzeci
    parametr w addEventListener jest opcjonalny i domyslnie false, a
    skladnie z 3 parametrami stosuje sie dla zgodnosci wstecz.


    --
    NotBear


  • 7. Data: 2015-02-13 14:37:19
    Temat: Re: Pytanie o JS: addEventListener()
    Od: NotBear <p...@i...pl>

    W dniu 2015-02-12 o 22:10, Marek pisze:
    > Dlaczego "children bubble" nie zostało odcięte przez stopPropagation() w
    > "children capture"???

    Bo juz jestes w children, wiec jego zdarzenia zostana obsluzone.
    Zwroc tez uwage (zamien kolejnosc w kodzie), ze w najglebszym elemencie
    nie ma znaczenia podawanie fazy, bo i tak wszystkie zdarzenia sie
    wykonaja w kolejnosci dodawania.

    StopPropagation jedynie nie wypuscilo zdarzenia dalej (w tym przypadku
    do parenta). Aby to bylo dobrze widoczne warto dolozyc grandchild:
    http://jsfiddle.net/erw6gwdk/ i potestowac blokowanie w elemencie child.

    --
    NotBear


  • 8. Data: 2015-02-13 14:39:05
    Temat: Re: Pytanie o JS: addEventListener()
    Od: NotBear <p...@i...pl>

    W dniu 2015-02-13 o 14:37, NotBear pisze:
    > StopPropagation jedynie nie wypuscilo zdarzenia dalej (w tym przypadku
    > do parenta). Aby to bylo dobrze widoczne warto dolozyc grandchild:
    > http://jsfiddle.net/erw6gwdk/ i potestowac blokowanie w elemencie child.
    >

    Wlasciwy link: http://jsfiddle.net/erw6gwdk/1/

    --
    NotBear


  • 9. Data: 2015-02-14 19:16:35
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Marek <p...@s...com>

    W dniu 2015-02-13 o 14:37, NotBear pisze:

    > StopPropagation jedynie nie wypuscilo zdarzenia dalej (w tym przypadku
    > do parenta).

    Wszystko jasne. Czyli zatrzymanie propagacji nie obejmuje obiektu, który
    tego dokonał a jedynie w/g kolejności następne obiekty. To mnie zmyliło
    faktycznie. Dzięki :-)


    --
    Pozdrawiam,
    Marek


  • 10. Data: 2015-02-14 19:23:30
    Temat: Re: Pytanie o JS: addEventListener()
    Od: Marek <p...@s...com>

    W dniu 2015-02-13 o 14:23, NotBear pisze:

    >
    > Praktyczna jest taka, ze IE<9 nie umie tak.
    >

    Czyli nawiązanie do (pre)historii i nic praktycznego...


    --
    Pozdrawiam,
    Marek

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: