2010-03-04 12 views
75

ऑनलाइन खोज करने का प्रयास किया, लेकिन ऐसा नहीं लगता कि मैं खोज क्वेरी को सही तरीके से तैयार कर सकता हूं।किसी भी जावास्क्रिप्ट ईवेंट श्रोताओं/हैंडलर तत्व/दस्तावेज़ से जुड़े हुए हैं या नहीं?

तो जितना आसान लगता है, मैं या तो jquery या सिर्फ जावास्क्रिप्ट के साथ सभी हैंडलर या ईवेंट श्रोताओं को सूचीबद्ध कर सकता हूं जो तत्व (ओं)/दस्तावेज़/विंडो से जुड़े हैं या डोम में मौजूद हैं।

बस सोच रहा है।

अग्रिम धन्यवाद।

+1

देखें http://stackoverflow.com/questions/446892/how-to-find-event-listeners-on-a-dom-node और http आप पा सकते हैं: //stackoverflow.com/questions/7810534/have-any-browsers-implemented-the-dom3-eventlistenerlist/7814692#7814692 – Nickolay

उत्तर

47

jQuery में 1.8 से पहले, का उपयोग करके देखें $("#element").data("events")

संपादित करें:

भी jQuery एक्सटेंशन नहीं है: listHandlers

+4

आप Laimoncijus धन्यवाद, आप कैसे jQuery के बिना खींच होता है कि? हो सकता है कि आप मुझे इस विषय के बारे में पढ़ने के लिए सामग्री दे सकते हैं। – GnrlBzik

+3

लगता है कि यह डब्ल्यू 3 सी इवेंट मॉडल के वर्तमान कार्यान्वयन में वास्तव में संभव नहीं है। देखें: http://www.quirksmode.org/js/events_advanced.html ("? कौन सा ईवेंट हैंडलर्स पंजीकृत हैं" के लिए खोज) पेज एक छोटे से बड़े वहाँ है, इसलिए हो सकता है अब चीजें बेहतर हो गया है, आपको थिन नहीं बता सकता, मैंने कभी कोशिश नहीं की ... – Laimoncijus

+0

धन्यवाद Laimoncijus:) – GnrlBzik

3

मैं बस की खोज की दृश्य घटना 2:

http://www.sprymedia.co.uk/article/Visual+Event+2

"इसे बनाने के तहत जाओ अनुभाग जाना "और अपने बुकमार्क उपकरण पट्टी के लिए पाठ लिंक खींच एक पेज की घटनाओं है कि पर जाएं और बुकमार्क

एफएफ मैक में परीक्षण पर क्लिक करें

+0

यह सच है, वर्तमान में प्रतिनिधि घटनाओं के साथ काम नहीं करता है। भविष्य में भविष्य में इसे संबोधित करने के लिए टिकट जोड़ा गया है: https://github.com/DataTables/VisualEvent/issues/33 – KoalaBear

32

जब डिबगिंग, तो आप सिर्फ वहाँ एक घटना है कि अगर देखना चाहते हैं घटना श्रोता निचली दाईं ओर:, मैं Visual Event या तत्व "एक तत्व का चयन करें और देखने के लिए Chrome की डेवलपर उपकरण की धारा" का उपयोग करें।

अपने कोड में, यदि आप संस्करण 1.8 से पहले jQuery का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं:

$(selector).data("events") 

घटनाओं मिलता है। संस्करण 1.8 के अनुसार, यह बंद हो गया है (this bug ticket देखें)। आप इसका उपयोग कर सकते हैं:

$._data(element, "events") 

लेकिन यह अनुशंसित नहीं है क्योंकि यह एक आंतरिक jQuery संरचना है, और भविष्य में रिलीज में बदल सकता है।

This question में कुछ उत्तर उपयोगी हो सकते हैं, लेकिन उनमें से कोई भी विशेष रूप से सुरुचिपूर्ण नहीं है जिस तरह $(selector).data("events") था।

+0

+1 दृश्य ईवेंट अनिवार्य है। मुझे आश्चर्य है कि इस कार्यक्षमता को अपने देव उपकरणों के लिए ब्राउज़र द्वारा कम नहीं किया गया है। – L0j1k

15

jQuery के बिना:

अगर श्रोताओं elem.addEventListener() विधि का उपयोग कर जोड़ा गया था, यह इन श्रोताओं को सूचीबद्ध करने के लिए आसान नहीं है। आप EventTarget.addEventListener() विधि को अपने आप से लपेटकर ओवरराइड कर सकते हैं। तब आपके पास जानकारी होगी, श्रोताओं को पंजीकृत किया गया था।

var f = EventTarget.prototype.addEventListener; // store original 
EventTarget.prototype.addEventListener = function(type, fn, capture) { 
    this.f = f; 
    this.f(type, fn, capture); // call original method 
    alert('Added Event Listener: on' + type); 
} 

उदाहरण कार्य पर http://jsfiddle.net/tomas1000r/RDW7F/

+0

अच्छा! प्रश्न का सही जवाब। –

संबंधित मुद्दे