2009-05-13 13 views
17

मैं एक तरह से एक गतिशील लोड jQuery document.ready समारोह डिबग करने के लिए तलाश कर रहा हूँ बनाना।Firebug तोड़ अंदर गतिशील लोड जावास्क्रिप्ट

स्पष्ट रूप से मैं केवल स्क्रिप्ट पैनल नहीं ला सकता हूं और माउस के साथ ब्रेकपॉइंट जोड़ सकता हूं क्योंकि फ़ंक्शन मौजूद नहीं है।

मैं भी जोड़ने की कोशिश की है "डिबगर," समारोह के लिए (उद्धरण के बिना), लेकिन यह कुछ भी नहीं किया। मैंने यह सुनिश्चित किया है कि जब मैंने कोशिश की तो समारोह वास्तव में निष्पादित किया गया है।

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

एड्रियन

संपादित करें: मैं सिर्फ देखा है कि Firebug वास्तव में डिबग पर टूट जाता है। हालांकि, जब यह गतिशील रूप से लोड की गई स्क्रिप्ट पर ऐसा करता है, तो यह सामान्य रूप से उस स्क्रिप्ट का स्रोत कोड नहीं लाता है। इसके अलावा, कॉल स्टैक मेरे अपने कोड के ठीक नीचे समाप्त होता है। मैं दस्तावेज़ स्टैक के माध्यम से दस्तावेज़ के लिए कार्यान्वयन ला सकता हूं, लेकिन यह वास्तव में मदद नहीं करता है। क्या यह एक फायरबग बग है या क्या मुझे कुछ याद आया है?

+0

क्या आपने उस डोमेन के लिए फ़ायरबग में डिबगिंग सक्षम की है जिससे आपका पृष्ठ लोड होता है (कंसोल पैनल)? – Cerebrus

+0

हाँ, मेरे पास है। मुझे पहले लोड होने वाले पृष्ठ पर स्क्रिप्ट को डिबग करने में कोई समस्या नहीं है, और वह पृष्ठ एक ही डोमेन में है। मैंने बस "डीबगर" की कोशिश की; वहाँ बयान और यह ठीक काम किया। तो ऐसा लगता है कि "डीबगर" स्टेटमेंट गतिशील रूप से लोड की गई स्क्रिप्ट के लिए काम नहीं कर रहा है। –

उत्तर

17

मैं सिर्फ इस similar question पर काम किया पर तोड़ने के लिए उम्मीद करेंगे। समाधान में डीबगर शब्द दो बार जोड़ना शामिल है; एक बार बाहरी फ़ाइल के शीर्ष पर और फ़ंक्शन के शीर्ष पर एक और बार जिसे डीबग करने की आवश्यकता होती है।

मैंने देखा कि यदि डीबगर शब्द केवल एक बार उपयोग किया जाता था, तो यह काम नहीं करता था। उदाहरण:

//myExternal.js 
debugger; 
function myExternalFunction(){ 
debugger; 
/* do something here */ 
} 
+0

यह वास्तव में काम करता है! बहुत बहुत धन्यवाद :-) –

+1

अद्यतन: शुक्र है कि यह बग पहले से ही फायरबग में तय किया गया है। मुझे इस चाल को लंबे समय तक नियोजित करने की ज़रूरत नहीं है ... –

0

आप ब्रेक पॉइंट डालने का प्रयास कर सकते हैं जहां ईवेंट कहा जाता है, और फिर "प्ले" पर क्लिक करने के बजाय, "चरण में" (F11) चुनें। मेरे पास मेरे सामने एक टेस्ट केस नहीं है, लेकिन मुझे लगता है कि यह काम कर सकता है।

-2

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

मूल रूप से

:

// mydynamicallyloadedfile.js 
... // do stuff 
debugger; // triggers debugger 
... // more stuff 

और मुझे फ़ायरबग debugger कीवर्ड

+0

धन्यवाद, लेकिन जैसा कि मैंने कहा, मैंने पहले ही डीबगर स्टेटमेंट की कोशिश की है और जब यह आमतौर पर ठीक काम करता है, तो यह इस मामले में काम नहीं करता है (मेरे प्रश्न में विवरण)। –

+0

आह हाँ, क्षमा करें :-( – olliej

+0

यह किसी भी अन्य ब्राउज़र पर काम करता है उसी तरह फ़ायरबग पर काम करता है –

0

मैं अगर तुम कभी मिला यह पता लगा पता नहीं है, लेकिन इस मामले में किसी और इसकी आवश्यकता है ...

मैं एक करने के लिए कोड मैं डिबग करने के लिए चाहता था ले जाकर इस के आसपास मिल गया बाहरी फ़ाइल जो मुख्य पृष्ठ से जुड़ी थी।

मेरे मामले में, मेरे पास डिफ़ॉल्ट था। एपीएक्स लोडिंग services.aspx jQuery AJAX का उपयोग कर सामग्री div में। बदले में Services.aspx, jQuery UI UI तत्वों को AJAX का उपयोग कर एक webservice से लोड कर रहा था जो इसे डेटा प्रदान कर रहा था। Webservice कोड data.js नामक फ़ाइल में था जिसे डिफ़ॉल्ट.aspx से जोड़ा गया था। मुझे कोड.एएसएक्स (जो डेटा के साथ टैब लोड करता है) के शीर्षलेख में मौजूद कोड को डीबग करने की आवश्यकता थी, लेकिन इसे किसी भी उपलब्ध निरीक्षकों में कभी नहीं देखा जा सका। मैंने बस डेटा.जेएस में एक नए फ़ंक्शन के लिए आवश्यक कोड को स्थानांतरित कर दिया और इसे services.aspx में शीर्षलेख से बुलाया।

मुझे आशा है कि कोई है जो यह की जरूरत को समझ में आता है!

+0

हाँ, यह ठीक काम करता है। मेरे मामले में कोड सर्वर द्वारा गतिशील रूप से जेनरेट किया गया था हालांकि उसी वेब अनुरोध में अन्य डेटा के आधार पर। –

0

बस का सामना करना पड़ा समान व्यवहार में (Firebug गतिशील लोड कोड में debugger; बयान अनदेखी) फ़ायरफ़ॉक्स 5.0/Firebug 1.7.3

फायरबग विंडो ("नई विंडो में फायरबग खोलें") को अलग करके काम किया।

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