2012-09-13 13 views
11

मेरे पास यह मजाकिया बग है जो मुझे होता है और मुझे यह नुकसान होता है कि इसे कैसे डिबग करना है। प्रत्येक बार जब कोई पृष्ठ मेरी साइट पर लोड होता है तो एक स्क्रॉल ईवेंट आग लगती है। पृष्ठ स्पष्ट रूप से हिलता नहीं है, और मैं निश्चित रूप से माउस या कीबोर्ड के माध्यम से स्क्रॉलिंग को ट्रिगर नहीं कर रहा हूं। मुझे पता है कि पुस्तक घटना क्योंकि मैं जिस पर लिखाजावास्क्रिप्ट स्रोत को कैसे ढूंढें स्क्रॉल इवेंट

$(window).bind('scroll', function (e) {console.log(e)}); 

हर पृष्ठ मैं अपने सांत्वना की लॉग में एक छोटे से "jQuery.Event" संदेश पर पर्याप्त ज़रूर कोड की एक पंक्ति डाल फायरिंग कर रहा है। जब मैं बिंदु तोड़ता हूं तो मेरा कॉल स्टैक jQuery.even.dispatch.apply (eventHandle.elem, तर्क) पर समाप्त होता है, जो मुझे काम करने के लिए एक टन नहीं देता है।

यहां सवाल है। मैं इस स्क्रॉल ईवेंट को ट्रिगर करने के बारे में कैसे पता लगा सकता हूं? क्या jquery इवेंट ऑब्जेक्ट में कोई विशेषता है जो मुझे बताएगी कि क्या स्क्रॉल उपयोगकर्ता स्क्रिप्ट द्वारा ट्रिगर या ट्रिगर किया गया था? इस स्थिति में आप इसे समझने के लिए क्या करेंगे?

+0

आप अपने ब्राउज़र में breakpoints सेट करके देखें और मैन्युअल रूप से स्रोत को कम करने की कोशिश कर सकता है। – adamdport

+0

लाइन को पढ़ें, "जब मैं इसे तोड़ता हूं तो मेरा कॉल स्टैक jQuery.even.dispatch.apply (eventHandle.elem, तर्क) पर समाप्त होता है, जो मुझे काम करने के लिए एक टन नहीं देता है।" – aamiri

+0

क्या यह संभवतः एक स्टैक ओवरफ़्लो समस्या हो सकता है? मैंने jQuery में ईवेंट हैंडलिंग को पहले देखा है ... कॉल स्टैक कितनी देर तक है? –

उत्तर

2

ठीक है, ऐसा लगता है कि jQuery एक छिपी हुई विशेषता के भीतर सभी ईवेंट बाध्यकारी डेटा छुपाता है। This post उन तरीकों का वर्णन करता है जो आपको कम से कम क्या चल रहा है - यह पता लगाने की आपकी ज़िम्मेदारी है कि हैंडलर कहां फ़ाइल में हैं।

मामले में जहां scroll घटनाओं शामिल कर रहे हैं में:

var scrollHandlers = jQuery._data(window, 'events')['scroll']; 
for (var i = 0; i < scrollHandlers.length; i++) { 
    console.error(scrollHandlers[i].handler); // or console.debug, whatever proves they exist 
} 
+0

वास्तव में सवाल का जवाब नहीं देता है क्योंकि उसकी स्क्रॉल शायद एक अधिभार या somesuch में ट्रिगर किया जा रहा है और यह केवल स्क्रॉल हैंडलर पाता है। लेकिन वैसे भी +1 क्योंकि 'jQuery._data (विंडो, 'घटनाओं') सीखने के लिए एक बड़ी बात थी। – dlsso

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