getEventListeners, monitorEvents ve skriptu rubrika: Programování: JavaScript

2 petrbolf
položil/-a 27.5.2016

V konzoli Chrome devtools jsou funkce jako getEventListeners(...), nebo monitorEvents(document.body, "click");

Je možné tyto funkce použít v normálním javascriptu? Je na to nějaká knihovna? Jde mi o to, že bych potřeboval dál pracovat s tím, co tyto funkce vrátí.

Řekněme, že třeba chci seznam všech událostí navěšených na nějakém elementu (které tam navěsila třeba nějaká knihovna). Představoval jsem si to tak, že do aplikace dopíšu kód a do html stránky si vypíšu co potřebuji.

Ať googlím jak googlím, zatím mi to vychází, že si buď napíše chrome extension a nebo to budu psát do konzole.

Dá se třeba v té konzoli načíst a spustit vlastní skript?

díky za nasměrování

odkaz
7 ondrej.zara
odpověděl/-a 27.5.2016

Žádné takové API bohužel neexistuje. Člověk je odkázán na schopnosti jednotlivých prohlížečů, jejich ladicích nástrojů a jejich proprietárních rozhraní (http://stackoverflow.com/questions/446892/how-to-find-event-listeners-on...).

Pokud člověk pro práci s událostmi použije nějakou abstrakci, může následně provádět reflexi pomocí této abstrakce, pakliže je taková funkcionalita k dispozici (http://www.sprymedia.co.uk/article/Visual+Event+2).

Alternativou je přepsání HTMLElement.prototype.addEventListener, ale to je ošklivý hack a člověk jeho použitím riskuje (rozhraní EventTarget se používá na více místech).

Komentáře

  • petrbolf : Dík. Přepsat HTMLElement.prototype.addEventListener bylo první co mě napadlo :-) , ale protože to je ošklivý hack, tak se mi do toho moc nechtělo. Nakonec jsem se rozhodl, že to zkusím přes chrome extension. To že to bude fungovat jen na Chrome v tuto chvíli nevadí, účel mi to splní (snad). Udělat si extension do Chrome je zdá se poměrně snadné, už to začínám pomalu chápat. Na ten Visual Event jsem také narazil. Dost možná by i stačil. A vlastně co, je to zase jenom chrome extension, takže si ho nejspíš rozšířím o to co potřebuji. Momentálně řeším co je to app, extension, page-action, browser-action a co pak podle toho mám k dispozici ve skriptech a co se kdy spouští. Ale je to docela intuivní. :-) dík 27.5.2016

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.