2009-12-21 16 views
12

मुझे कोड का एक ढेर मिला है जो अप्रत्याशित चीजें कर रहा है जब मैं कुछ <button> तत्वों पर क्लिक करता हूं।फ़ायरबग को जल्द से जल्द तोड़ने के लिए कह रहा है क्योंकि किसी भी जावास्क्रिप्ट को

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

जब भी किसी भी जावास्क्रिप्ट कोड निष्पादित किया जाता है तो फ़ायरबग (या कोई जावास्क्रिप्ट डीबगर) तोड़ने का कोई तरीका है? हो सकता है कि प्रत्येक लाइन प्रोग्रामेटिक रूप से ब्रेक पॉइंट सेट अप करें? या यह पता लगाने का कोई और तरीका है कि बटन किस प्रतिक्रिया का जवाब दे रहा है (पृष्ठ उपयोगकर्ता बो प्रोटोटाइप, jQuery, और कुछ कस्टम जावास्क्रिप्ट। मुझे पता है।)

उत्तर

12

बस फायरबग पैनल पर बाएं बटन दबाएं (बाएं- इसके शीर्ष कोने, दो पीले लंबवत रेखाएं, जब स्क्रिप्ट टैब चयनित होता है) - और यह पहली जेएस स्ट्रिंग पर रुक जाएगा।

लेकिन यह किसी भी घटना में जेएस को वास्तव में निष्पादित करना बंद कर देगा - इसलिए यदि आपके पास माउस बटन को पकड़ने वाला माउस है और माउस क्लिक करता है - मैं माउस क्लिक पर रुकने में सक्षम नहीं हूं, क्योंकि प्रत्येक बार माउस पर स्क्रिप्ट बंद हो जाएगी आप माउस को इस बटन पर ले जाने की कोशिश करते हैं। मेरा सुझाव है कि आप केवल संदिग्ध स्थानों में अलर्ट() को सम्मिलित करने के लिए सुझाव दें - कुछ पुनरावृत्तियों के बाद आपको सटीक स्ट्रिंग मिलेगी (जहां त्रुटि होती है)।

+1

कुछ मामलों में आप माउस चाल/क्लिक समस्या के आसपास हो सकते हैं। किसी बटन या किसी अन्य तत्व के लिए जो फोकस प्राप्त कर सकता है, आप तत्व को टैब कर सकते हैं और स्पेस दबा सकते हैं या क्लिक ईवेंट को आग लगाने के लिए दर्ज कर सकते हैं। –

+1

हम्म, अच्छी जानकारी के लिए +1, हालांकि उस बटन पर क्लिक करना इस विशेष पृष्ठ पर काम नहीं कर रहा है (जो, जावास्क्रिप्ट के अनुसार, एक गड़बड़ है)। बटन अपनी छोटी चमकती चीज करता है, लेकिन पृष्ठ पर जावास्क्रिप्ट क्रियाओं को ट्रिगर करने से डीबगर को जीवन में लात नहीं मिलती है। –

+0

यहां वही समस्या है। पर रोक नहीं कर सकता: \t setTimeout (function() { \t \t विंडो स्थान = '/ someBad/जगह' \t}, 0); –

1

यदि यह एक सामान्य डीबगिंग समस्या है तो आप सफारी/क्रोम में वेब इंस्पेक्टर का उपयोग कर सकते हैं। ,

... 
debugger; // Will trigger the debugger 
... 

अन्यथा आप विच्छेदबिंदु, सशर्त breakpoints सेट कर सकते हैं अगले निष्पादन पर रोकते हैं, और सभी सामान्य चाल: एक अतिरिक्त लाभ यह है कि आप डिबगर निकालने के लिए अपने जावा स्क्रिप्ट कोड में निम्नलिखित बयान फेंक कर सकते हैं। कुछ अच्छे वीडियो here उपलब्ध हैं।

alert सुझाव के जवाब में। यदि आपके पास डीबगर तक पहुंच है तो मैं console.log या console.dir का उपयोग करने की गंभीरता से अनुशंसा करता हूं। आपको अपनी स्क्रिप्ट के निष्पादन को अवरुद्ध किए बिना अधिक जानकारी प्राप्त होगी। साथ ही, यह मत भूलना कि console.log कई पैरामीटर ले सकता है ताकि आप डेटा को अच्छी तरह प्रिंट कर सकें, आपको alert जैसी एक स्ट्रिंग में खुद को बाध्य करने की आवश्यकता नहीं है।

+0

वेब इंस्पेक्टर इस समस्या को हल नहीं करता है। यह अवांछित व्यवहार निष्पादन में रोक नहीं है। कोड ठीक से निष्पादित कर रहा है, लेकिन जो भी हम चाहते हैं वह नहीं कर रहा है। मुझे उस कोड को ढूंढना होगा जो क्लिक द्वारा ट्रिगर किया गया है। –

+0

मेरी टिप्पणी केवल वेब इंस्पेक्टर द्वारा प्रदान किए जाने वाले फायदों के साथ ही पहले से बताई गई एक पुनर्जन्म थी। मैं यह इंगित करने की कोशिश कर रहा हूं कि फायरबग एकमात्र जवाब नहीं है। यदि आप जानना चाहते हैं कि क्लिक पर क्या होता है, तो आप कहां क्लिक करते हैं, नोड (और माता-पिता) के लिए ईवेंट श्रोताओं को देखें। यह वेबकिट नाइटलीज़ में उपलब्ध है, और फायरबग के लिए इवेंटबग एक्सटेंशन का उल्लेख किया गया है। –

2

मुझे a bookmarklet that will list all bound events in your page मिला।

यदि आप नहीं जानते कि तृतीय-पक्ष कोड द्वारा कौन सी घटनाएं बाध्य हैं, तो यह प्रकार उपयोगी होगा।

2

यदि आप देखना चाहते हैं कि पृष्ठ पर कौन सी घटनाएं स्थापित की गई हैं, तो आप Eventbug भी आजमा सकते हैं।

3

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

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

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