2010-10-07 15 views
7

मैं कॉग्नोस के साथ काम कर रहा हूं, एक बहुत ही निराशाजनक बीआई अनुप्रयोग जो जावास्क्रिप्ट पर भारी निर्भर करता है। असल में, जब <select> बॉक्स बदल जाता है, तो स्क्रीन पर डेटा रीफ्रेश किया जाता है, संभवतः एक AJAX फ़ंक्शन या कुछ समान होता है। मैं jQuery का उपयोग करके इस बदलाव को मजबूर करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि यह कॉल को कैसे रोक सकता है ताकि मैं इसे डुप्लिकेट कर सकूं। जेएस कोड का मीट्रिक टन भी है, इसलिए हाथ से खोजना मुश्किल है।मैं जावास्क्रिप्ट कार्यों को कैसे पकड़ूं जिन्हें बुलाया जा रहा है?

वहाँ Firebug का उपयोग कर प्रदर्शित करने के लिए विभिन्न कार्यों बुलाया जा रहा है एक तरीका है? क्या मेरा दृष्टिकोण सही है?

उत्तर

11

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

वैकल्पिक रूप से, यदि आपको किसी भिन्न उपकरण का उपयोग करने में कोई फर्क नहीं पड़ता है, तो Google Chrome में एक अंतर्निहित डीबगर और इंस्पेक्टर है जो आपको किसी तत्व से जुड़े ईवेंट हैंडलर दिखा सकता है। तो क्रोम में, यदि आप पृष्ठ लाने, राइट-क्लिक select बॉक्स और तत्व का निरीक्षण, तो निचले भाग में दाएँ हाथ की ओर पर चयन वहाँ घटना इसे से जुड़े प्रबंधकों की सूची में होना चाहिए। यह काम करने के लिए थोड़ा आसान हो सकता है।

अंत में, भी टूल, (एक URL की तलाश द्वारा आप हिम्मत है कि वास्तव में डेटा को फिर से लोड पैदा में कोड की बिट की पहचान कर सकते हैं, उदाहरण के लिए, या एक XmlHTTPRequest उदाहरण के लिए, या jQuery के .ajax, .post, .get, या .getJSON फ़ंक्शन यदि यह jquery का उपयोग कर रहा है), तो आप उस पर ब्रेकपॉइंट डाल सकते हैं और फिर चयन को ट्रिगर कर सकते हैं, फिर कॉल स्टैक (दोनों टूल्स में दाईं ओर) देखें।

शुभकामनाएं!

+0

मैं वास्तव में जीसी का उपयोग करना पसंद करता हूं, लेकिन ऐसा नहीं लगता कि यह कॉग्नोस के साथ काम करेगा। मैं इसे एक शॉट दूंगा और वापस रिपोर्ट करूंगा। धन्यवाद टीजे! – Nic

+0

ईप। ठीक है, तो क्रोम में कोई भाग्य नहीं है क्योंकि यह कॉग्नोस द्वारा समर्थित नहीं है।तो मैं एफएफ/एफबी में वापस गया और सुझाव के रूप में विराम का इस्तेमाल किया। मैंने एक एजेक्स कॉल ट्रिगर किया, लेकिन लिपि तोड़ नहीं आई। मैंने सवाल पूछने से पहले ऐसा किया, सोच रहा था कि मैंने कुछ गलत किया है। कोई विचार? AJAX कॉल अभी भी भेजा गया था। – Nic

+0

@melee: वाह। असल में, वाह^2 क्योंकि मुझे आश्चर्य है कि कॉग्नोस क्रोम के साथ काम नहीं करता है (वे क्या कर रहे हैं, ब्राउज़र स्नीफिंग? Tsk)। अफसोस की बात है, अगर ब्रेक काम नहीं करता है, तो आप यह कर सकते हैं कि वे हैंडलर को कैसे जोड़ रहे हैं (आसान है कि 'चयन' में 'आईडी' है या यहां तक ​​कि 'ऑनक्लिक' है, यदि यह नहीं है तो मुश्किल है) और आपको ढूंढने वाले हैंडलर पर ब्रेकपॉइंट डालें। लेकिन आप उसे जानते थे। :-(शुभकामनाएँ! –

0

आप Firefox + Firebug उपयोग कर रहे हैं आप "शुद्ध" टैब को सक्रिय करने और अजाक्स के सभी प्रयास किए जा कॉल की जांच कर सकते हैं। (एक्सएचआर बटन के नीचे देखें)

+0

ठीक है, यह कॉल है जो पोस्ट डेटा के साथ किया जा रहा है, लेकिन क्या यह वास्तविक फ़ंक्शन दिखाता है जिसने AJAX कॉल किया है? (क्या यह समझ में आता है?) – Nic

0

फ़ायरफ़ॉक्स में तत्व का चयन करें और देखें कि क्या अपने onclick घटना है या अगर यह एक आईडी है तो उस आईडी के लिए जे एस फ़ाइल खोज करते हैं। ||:

+0

ने कोशिश की कि, दुर्भाग्य से मुझे लगता है कि एक चालू समारोह चल रहा है। – Nic

1

दुख की बात है, इस बिंदु पर, तो आप शायद Cognos में डीबगिंग के पुराने ढंग का चेतावनी बॉक्स विधि का उपयोग कर बंद सबसे अच्छा कर रहे हैं। आईबीएम ने कहा है कि कॉग्नोस के नए संस्करण फ़ायरफ़ॉक्स में काम करेंगे, लेकिन प्री-आईबीएम कोड बहुत आईई केंद्रित था, और आईई के नए संस्करणों में भी विशेष रूप से अच्छा नहीं था। आप IE के नए संस्करणों में F12 डीबगर कार्यक्षमता का भी उपयोग कर सकते हैं, जो कभी-कभी उपयोगी होता है। मैं नाटक करता हूं कि इनमें से कोई भी फायरबग जितना अच्छा नहीं है।

इसके अलावा, वास्तविक समस्या के संबंध में आप डीबग करने का प्रयास कर रहे थे, तो कॉग्नोस में चयन करें, अगर आप रिपोर्ट संपादित करते समय उस पर क्लिक करते हैं, तो "ऑटो-सबमिट" नामक पैरामीटर होता है। यदि आप इसे "नहीं" में बदलते हैं, तो आपको jQuery में व्यवहार को अक्षम करने की आवश्यकता नहीं होगी।