2012-06-28 11 views
7

I * क्लाइंट-साइड जेएस का उपयोग एक्सएमएल फाइलों को पार्स करने और जटिल जेएस कोड को eval पर परिणामस्वरूप उत्पन्न करने के लिए कर रहा है। (पुन: प्रयोज्य फ़ंक्शंस जेनरेट करना जिन्हें रनटाइम द्वारा लात मार दिया गया है।) हालांकि, मुझे उत्पन्न होने वाले कोड को डीबग करना होगा, और क्रोम के अंतर्निहित ब्रेकपॉइंट्स, स्टेपिंग, वॉच विंडोज इत्यादि का उपयोग करना चाहूंगा।ब्रेकपॉइंट्स सेट करें और डीबग eval'd जावास्क्रिप्ट

क्या वहां है ऐसा करने का एक आसान तरीका:

  • उत्पन्न जेएस स्ट्रिंग को कंसोल और/या विंडो में डंप करें।
  • जावास्क्रिप्ट
  • (वैकल्पिक) JSBeautifier जैसे प्रीटीफायर के माध्यम से जेएस चलाएं।
  • जेएस को किसी अन्य वेब पेज में <script src="..."> के माध्यम से लोड की गई फ़ाइल में पेस्ट करें।

* वास्तव में, मेरा एक दोस्त इस कर रहा था, मुझे

उत्तर

16
इसके बजाय eval का उपयोग करने का

, और मैन्युअल रूप से एक अलग फ़ाइल में कॉपी के बजाय/चिपकाने, आप गतिशील रूप से लोड कर सकते हैं जे एस नहीं सीधे उस पृष्ठ में जिसने गतिशील रूप से बनाए गए <script> तत्व पर data uri का उपयोग करके इसे उत्पन्न किया। इस दृष्टिकोण के साथ, क्रोम के डेवलपर टूल्स (और फायरबग) आपको डेटा-यूआरआई को स्क्रिप्ट के रूप में चुनने, सुंदर प्रिंट चालू करने, ब्रेकपॉइंट्स सेट करने और दूर जाने की अनुमति देता है।

var js = createMyJSCodeString(); 
addCode(js); // Right now! Debuggable! 

// Dynamically evaluate JavaScript-as-string in the browser 
function addCode(js){ 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.src = 'data:text/javascript;charset=utf-8,'+escape(js); 
    document.body.appendChild(e); 
} 
+0

क्या आपने अभी ... जवाब दिया था? ऐसा लगता है जैसे आपने पहले से ही अपने प्रश्न में इस बारे में बात की थी। – TheZ

+4

@TheZ हां, मैंने किया। ज्ञान आधार में जोड़ने के लिए यह एक स्टैक ओवरफ्लो पर स्वीकार्य अभ्यास है (http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question)। जब आप प्रश्न पोस्ट करते हैं तो स्वचालित रूप से उत्तर जोड़ने के लिए प्रेस करने के लिए यहां एक चेकमार्क भी है, जो मैंने यहां उपयोग किया था। – Phrogz

+0

ओह मैं देखता हूँ! इसे – TheZ

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