ugrás a tartalomhoz

dom ready eseménykezelők listázása

Burnee · 2011. Dec. 5. (H), 12.36
Sziasztok!

Van valami ügyes módszer arra, hogy kilistázzuk egy oldalon az összes olyan eseménykezelőt, ami $(document).ready-re, esetleg onload-ra van kötve? Szóval az összes olyat, ami vár legalább a kész DOM-ra a futással.
 
1

jQuery

Poetro · 2011. Dec. 5. (H), 13.03
Ha minden elemhez jQuery-vel adod hozzá az eseményeket, akkor azokat viszonylag könnyű listázni, ugyanis a jQuery ezt az elemhez eltárolja. Például:
$(element).data('events')
segítségével visszakapod az összes rárakott eseménykezelőt. Ha a ready eseménykezelőre vagy kíváncsi, az egy nehezebb falat, mivel azt a jQuery nem teszi publikussá. Ezt legfeljebb a jQuery kódjának átírásával tudod orvosolni, de természetesen a jQuery verziójától függ, hogy a ready hogyan működik. Ez a rész ugyanis verzióról verzióra elég sokat változott. Például jQuery 1.3 alatt még a jQuery.readyList változó alatt volt elérhető az összes függvény, később ebből lokális változó lett.

DOM műveletekkel szabványosan nem lehet hozzáférni ehhez a listához tudomásom szerint. De ha leírod, mire is van pontosan szükséged, és miért, talán tudunk segíteni.
2

a probléma az...

Burnee · 2011. Dec. 5. (H), 13.49
A konkrét probléma az, hogy van egy elég komoly alkalmazás, és van neki jó nagy kliens oldali része is (javascript). Épp performance teszteket végzek rajta, és van valahol több mint egy másodperc, ami elveszik. Ezt szeretném megtalálni.
Az hogy minden js-t átvizsgáljak, azért nem jó megoldás, mert egyrészt nagyon sok van belőle, másrészt van native és jquery-s is, harmadrészt pedig van olyan, amit a wicket (egy java framework) ad hozzá szerver oldalról - elég komplex és beégetett módon.
Azt tudom, hogy a hiányzó másodperc a DOM renderelése után van.
Szívesen fogadok bármilyen alternatív ötletet, ami közelebb visz a megoldáshoz.
4

Tudod hogy mi az a kodreszlet

Leonuh · 2011. Dec. 5. (H), 13.57
Tudod hogy mi az a kodreszlet aminel erzekeled ezt a lassusagot... Elvileg erre fapados modszeres felezessel gyorsan rajohetsz... Elhalasztod a scriptet es szepen megtalalod a lassusag forrasanak a kezdetet vagy epp a hibat :)

Persze masnak lehet/biztos van jobb otlete :)

Remelem tudtam segiteni :)
5

sajnos ez nem megoldás

Burnee · 2011. Dec. 5. (H), 14.00
Sajnos ez nem megoldás, mert nem egzakt forráskódból jön az összes javascript, ahogy azt írtam is, sokat a wicket tesz hozzá.
6

Feladtad a lecket :)

Leonuh · 2011. Dec. 5. (H), 14.02
Feladtad a lecket :)
8

Profile

Poetro · 2011. Dec. 5. (H), 16.55
Ahogy szabo.b.gabor is írta, szinte minden böngészőben van profiler, Fx alatt csak a Firebug-ban, de készül a beépített fejlesztői eszköz is. Webkit alatt ugye ott a Web Inspector, Opera alatt a Dragonfly, IE alatt pedig az F12 Fejlesztői eszközök. Azaz minden böngészőben megvan a lehetőség, hogy lemérd, hogy melyik függvény fut sokáig, majd azt részletesen kielemezd.
3

Poetronak tokeletesen igaza

Leonuh · 2011. Dec. 5. (H), 13.51
Poetronak tokeletesen igaza van, de mar szuletoben a megoldas:

One problem of the current implementation of W3C’s event registration model is that you can’t find out if any event handlers are already registered to an element. In the traditional model you could do:
alert(element.onclick)
and you see the function that’s registered to it, or undefined if nothing is registered. Only in its very recent DOM Level 3 Events W3C adds an eventListenerList to store a list of event handlers that are currently registered on an element. This functionality is not yet supported by any browser, it’s too new. However, the problem has been addressed.
7

profiler?

szabo.b.gabor · 2011. Dec. 5. (H), 14.14
google? nem ismerem ezeket az eszközöket, de valami ilyesmi kellene neked szerintem..