🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #50281

Re: Czy zdarzenie ma podpiętą funkcję - jak sprawdzić

#50281
From: Peter May
Date: Fri, 17 Sep 2010 20:45
56 lines
3239 bytes
W dniu 2010-09-17 21:21, emil pisze:
> On 09/14/2010 01:16 PM, Peter May wrote:
>> Jakoś nigdy tego nie potrzebowałem :/ Niemniej jednak w jaki sposób mogę
>> sprawdzić czy pod dane zdarzenie w danym elemencie jest już podpięta
>> dana funkcja? Coś nie mogę znaleźć metody albo nie ma takiej możliwości
>> bezpośredniej.
>>
>> Chodzi mi o coś takiego (upraszczam do maksimum przykład):
>>
>> var el = document.getElementById("test");
>> if(pod zdarzenie onclick w elemencie el jest podpieta funkcja "przyklad")
>> {
>> return false;
>> }
>>
>> Mogę co prawda obejść ustawiając sobie atrybut jakiś wcześniej, a w nim
>> informację, że obiekt ma już podpiętą funkcję "przyklad" pod zdarzenie,
>> ale to chyba nie najlepszy pomysł.
>>
> Standard DOM nie uwzględnia tego i ogólnie rzecz biorąc się nie da.

No w specyfikacji DOM 1,2,3 nie widziałem właśnie tego. No ale zawsze 
mogą istnieć nieudokumentowane tricki ;-)

> Zazwyczaj nie podpina się handlerów bezpośrednio za pomocą
> addEventListener, tylko używa się pośredniej funkcji, która zapisuje do
> mapy albo tablicy wszystkie handlery podpięte do danego elementu.

Raczej korzystam z pośredniej funkcji. Ot, choćby z powodów, które 
opisane są tutaj:
https://developer.mozilla.org/pl/DOM/element.addEventListener

"
Po co używać addEventListener?

addEventListener daje możliwość zarejestrowania obsługi zdarzenia według 
specyfikacji W3C DOM. Korzyści są następujące:

* Pozwala na dodanie więcej niż jednego obiektu obsługującego zdarzenie. 
Jest to szczególnie użyteczne przy bibliotekach DHTML czy rozszerzeniach 
Mozilli, które pracują, gdy uruchomione są inne biblioteki i rozszerzenia,
* Daje większą kontrolę nad etapem aktywacji obiektu nasłuchującego 
listener (przechwytywanie vs. propagowanie),
* Działa dla każdego elementu z DOM, a nie tylko dla elementów HTML.
"

Inna sprawa to attachEvent w IE. Ale to już inna bajka.

> Popatrz np. w kod jQuery. Poszukaj również w archiwum ajaxian.com, było
> parę niezłych postów na ten temat.

Owszem, ale na temat, który mnie interesuje, nic nie ma :/ Widocznie 
jeszcze tego specyfikacja DOM nie dorobiła się :-(

-- 
Peter
Technical Details
Message-ID: <i70k21$94b$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
References: <i6nlhk$u7u$1@news.onet.pl> <i70f46$o87$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
From: Peter May <peter.may@onet.pl>
Newsgroups: pl.comp.lang.javascript
Subject: Re: Czy zdarzenie ma podpiętą funkcję -
 jak sprawdzić
Date: Fri, 17 Sep 2010 22:45:52 +0200
Organization: http://onet.pl
Lines: 56
Message-ID: <i70k21$94b$1@news.onet.pl>
References: <i6nlhk$u7u$1@news.onet.pl> <i70f46$o87$1@news.onet.pl>
NNTP-Posting-Host: 178.182.66.38.nat.umts.dynamic.eranet.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1284756355 9355 178.182.66.38 (17 Sep 2010 20:45:55 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Fri, 17 Sep 2010 20:45:55 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4
In-Reply-To: <i70f46$o87$1@news.onet.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit