2010-01-13 17 views
25

मैं उस साइट पर काम कर रहा हूं जिसमें विरासत जावास्क्रिप्ट और jquery के भार शामिल हैं और यह दिखाने के लिए कोई दस्तावेज नहीं है कि क्या हो रहा है।पर क्लिक किए जा रहे विशिष्ट जावास्क्रिप्ट कोड को पकड़ना

मुझे ठीक करने के लिए एक विशिष्ट समस्या है और मुझे बटन पर क्लिक होने पर निष्पादित किया जा रहा प्रासंगिक कोड नहीं मिल रहा है। लीगेसी स्क्रिप्ट की सैकड़ों लाइनों के माध्यम से मुझे ट्रैवलिंग (और समझने) से बचाने के लिए, क्या संभवतः फ़ायरबग में एक सुविधा है, जो पहचान करेगा कि जब मैं बटन पर क्लिक करता हूं तो कौन सी स्क्रिप्ट निष्पादित की जा रही है?

आपकी मदद के लिए धन्यवाद।

+0

वाह, 10 मिनट, 4 पूरी तरह से अलग जवाब, जिनमें से सभी कोशिश करने के लिए अच्छी चीजें हैं। टीम चलो। :) –

+0

संभावित डुप्लिकेट [फ़ायरबग (या इसी तरह के टूल) के साथ जावास्क्रिप्ट/jQuery इवेंट बाइंडिंग को कैसे डिबग करें] (http://stackoverflow.com/questions/570960/how-to-debug-javascript-jquery-event- बाइंडिंग- फ़ायरबग-या-समान-उपकरण) –

उत्तर

17

मेरा मानना ​​है कि फायरबग की कंसोल विंडो में Profile नामक एक सुविधा है। प्रोफ़ाइल पर क्लिक करें, बटन क्लिक करें, फिर प्रोफ़ाइल पर क्लिक करें। यह आपको देना चाहिए कि उस समय सभी कार्यों को क्या कहा जाता था। चेतावनी दीजिये कि यदि इस कोड में jQuery शामिल है, तो आपको कार्यों की एक बड़ी सूची मिल सकती है क्योंकि jQuery अपने कोड में टन का उपयोग करता है। दुर्भाग्य से, प्रोफाइलर अज्ञात कार्यों को भी दिखाएगा, जो वास्तव में दर्द हो सकता है।

अन्यथा, बटन के वर्ग या आईडी के लिए कोड में एक खोज करें और उनके माध्यम से जाएं। यदि आपके पास fancy की आईडी है तो आप अपने कोड में #fancy खोज सकते हैं और इसे ढूंढने का प्रयास कर सकते हैं। इससे आपको कम से कम सामान्य दिशा में ले जाया जा सकता है।

+1

ऐसा किया गया है - बिल्कुल वही है जो मैं ढूंढ रहा था - भले ही आउटपुट बहुत लंबा हो! आपकी मदद के लिए सभी के लिए बहुत बहुत धन्यवाद। – Kevin

+3

यह वास्तव में डेवलपर्स के लिए एक महान जगह है - मैं हर किसी के समय और कौशल के लिए बहुत आभारी हूं। – Kevin

0

फ़ायरबग में आप कुछ जेएस में ब्रेकपॉइंट सेट कर सकते हैं और फिर आपको एक स्टैक मिल जाएगा जो आपको वर्तमान फ़ंक्शन कॉल स्टैक को बताना होगा। तो यदि आप कई हैंडलर द्वारा उपयोग किए गए फ़ंक्शन में ब्रेकपॉइंट सेट करते हैं तो आप इसका उपयोग यह पता लगाने के लिए कर सकते हैं कि आप किस हैंडलर में हैं।

यदि आप AJAX कॉलबैक से निपट रहे हैं और ऐसा ही है तो यह शायद काम नहीं करेगा।

+0

ध्यान दें कि स्टैक सुविधा फ़ायरफ़ॉक्स 2 (आईआईआरसी) के लिए फ़ायरबग में उपलब्ध नहीं है। –

7

आप फायरबग के "अगले पर तोड़ें" बटन (स्क्रिप्ट टैब में; यह एक विराम बटन जैसा दिखता है) पर क्लिक कर सकते हैं, फिर उस बटन को दबाएं जिसे आप डीबग करना चाहते हैं।

अगली बार जब कोई जावास्क्रिप्ट कोड निष्पादित होता है, तो फ़ायरबग डीबगर में टूट जाएगा और आपको कोड की उस पंक्ति को दिखाएगा।

+0

आह, तो पॉज़ बटन क्या करता है: डी मुझे याद रखना होगा कि एक – workmad3

4

ब्रेक बटन मेरे लिए काम नहीं करता था। इसके बजाय मैंने फायरबग के साथ ऑनक्लिक विशेषता संपादित की और इसे "डीबगर" के साथ प्रस्तुत किया; ... फिर आप क्लिक करने के बाद वहां तोड़ देंगे :)

3

उपर्युक्त उत्तरों में से कोई भी मेरे लिए काम नहीं करता है। मैं फ़ायरबग का उपयोग करने का प्रयास कर रहा हूं यह पता लगाने के लिए कि किसी पृष्ठ पर एक सुविधा उस साइट के लिए कैसे काम कर रही है जिस पर मेरा कोई नियंत्रण नहीं है। यहां मेरे लिए क्या काम किया है।

पहले, तत्व मैं पेज स्रोत से पर क्लिक कर रहा हूँ की आईडी मिल गया, और फिर एक घड़ी (स्क्रिप्ट टैब के अंतर्गत) बनाने के द्वारा इसे करने के लिए एक अस्थायी संदर्भ मिलता है:

tmp=document.getElementById("idOfElement")

अगला , मैंने वर्तमान ऑनक्लिक मान को किसी अन्य अस्थायी चर को सौंपा।

oldfunc=tmp.onclick

इसके बाद, मैं एक नया onclick समारोह में परिभाषित किया। शुरुआत में मैंने समारोह में पहली चीज़ के रूप में debugger; डालने का प्रयास किया, लेकिन यह काम नहीं करता है! बजाय, मैं एक चेतावनी बनाया:

tmp.onclick = function() { alert("Ok"); oldfunc() }

अब, जैसे ही मैं बटन चेतावनी ऊपर आता है, जो बिंदु पर मैं फिर क्लिक करें बटन "अगले पर तोड़" के रूप में एक और में उल्लिखित पर क्लिक करें रूप में इस सवाल का जवाब। फिर मैंने चेतावनी को खारिज कर दिया और तुरंत मैं सही स्थान पर डीबगर में हूं।

मेरे मामले में, "अगले पर तोड़ें" बटन स्वयं ही काम नहीं करता है, क्योंकि कई अन्य घटनाएं हैं, पेज पर बस मजाक करने से ब्रेकपॉइंट मारा जा रहा है, मुझे बटन पर क्लिक करने से रोकना ।

+0

वास्तव में बहुत चालाक है! – pymarco

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