2010-12-01 9 views
17

मैं console.log के लिए इस विकल्प document.ready() में परिभाषित किया है:आईई में स्क्रिप्ट कंसोल (console.log) को लिखने का सही तरीका क्या है?

$(document).ready(function(){ 
    console.log("doc ready"); 
    if(typeof console === "undefined"){ 
    console = { log: function() { } }; 
    } 
} 

मैंने सोचा था कि आईई इस समारोह उपलब्ध है, लेकिन, जब मैं ऊपर

console.log("doc ready"); 

कॉल उत्पादन फ़ायरफ़ॉक्स में प्रकट होता है शामिल होना चाहिए था कंसोल लेकिन आईई में नहीं - वास्तव में आईई स्क्रिप्ट निष्पादन इस बिंदु पर पूरी तरह टूट जाता है।

IE में कंसोल के लिए लिखने के लिए सही तरीका क्या है?

उत्तर

0

कंसोल फ़ायरबग के लिए है।

आपको IE में कंसोल को लिखने में सक्षम बनाने के लिए firebug lite इंस्टॉल करना होगा।

+0

कंसोल क्रोम – darioo

+1

गलत में भी काम करता है, आपको आईई 7 और नीचे कंसोल के लिए फायरबग लाइट स्थापित करना होगा। आईई 8 में एक कंसोल है, जो फायरबग के रूप में लॉगिंग विधियों के साथ मजबूत नहीं है, लेकिन यह वहां है। – epascarello

13

निर्देश के गलत आदेश की वजह से स्क्रिप्ट निष्पादन टूटता है, यह बेहतर हो सकता है:

$(document).ready(function(){ 

    if(typeof console === "undefined"){ 
    console = { log: function() { } }; 
    } 
    console.log("doc ready"); 
} 

आप पहली बार पहुँच पता चल सके कि यह मौजूद है (और यदि नहीं इसे बनाने), इस परिणाम से पहले सांत्वना हैं एक त्रुटि में

6

आईई 6/7 में डिफ़ॉल्ट रूप से कंसोल नहीं है।

असल में, फ़ायरफ़ॉक्स भी नहीं - यह फ़ायरबग नामक प्लग-इन द्वारा प्रदान किया जाता है; यदि आप फायरबग स्थापित किए बिना फ़ायरफ़ॉक्स की एक प्रति का उपयोग करते हैं, तो आपको console को आईई के साथ ही कॉल करने की कोशिश करने में त्रुटियां मिलेंगी।

IE8/9 करना एक कंसोल है।

क्रोम और सफारी निर्मित एक सांत्वना वस्तु की क्या ज़रूरत है, लेकिन उस पर गिनती नहीं है Firebug या IE8 के रूप में बिल्कुल उसी तरह काम कर रहे।

नोट सभी ब्राउज़रों में, सांत्वना वस्तु जब तक डिबग खिड़की खुला है नहीं बनाया जा सकता है। इसका मतलब है कि console.log कॉल के साथ आपका कोड किसी भी ब्राउज़र में विफल हो सकता है, केवल आईई नहीं।

आपके उदाहरण में, आप अनिवार्य रूप से एक डमी console ऑब्जेक्ट बना रहे हैं यदि यह अस्तित्व में नहीं है, जो स्पष्ट रूप से कंसोल के बिना ब्राउज़र को रोकने के लिए लक्षित है यदि आप console.log() पर कॉल करते हैं। लेकिन आप उस कोड को चलाने से पहले console.log() पर कॉल कर रहे हैं, इसलिए कंसोल के बिना वे ब्राउज़र उस लाइन पर क्रैश हो जाएंगे। इसलिए आपको अपनी console.log("doc ready"); लाइन नीचे ले जाना चाहिए, इसलिए यह उस बिट के बाद आता है जो console मौजूद है या नहीं।

यदि आप आईई के लिए कंसोल मौजूद होना चाहते हैं, तो Firebug Lite नामक फायरबग का एक संस्करण है, जिसे किसी भी ब्राउज़र पर चलाया जा सकता है। यदि आप इसे चलाते हैं, तो यह console ऑब्जेक्ट बना देगा।

हालांकि, ध्यान दें कि यह केवल पृष्ठ के लोड होते के बाद चलाया जा सकता है, तो आप यह कभी नहीं दस्तावेज़ तैयार समारोह में सांत्वना संदेश दिखाने के लिए प्राप्त करने में सक्षम हो जाएगा। इसके अतिरिक्त, यह कंसोल ऑब्जेक्ट बनाने में असफल हो सकता है यदि यह पहले से मौजूद है, तो आपके पास डमी कंसोल ऑब्जेक्ट बनाने के लिए तैयार दस्तावेज़ में कोड फ़ायरबग लाइट को सही तरीके से काम करने से रोक सकता है।

अंत में, कंसोल का उपयोग करते समय डिबगिंग उद्देश्यों के लिए शानदार है, कृपया सुनिश्चित करें कि आप कभी भी console.log पर कॉल के साथ लाइव कोड नहीं भेजते हैं, भले ही आप उन्हें बाद में डिबगिंग उद्देश्यों के लिए उपयोग करने की योजना बनाते हों। जैसा कि आपने पहले ही देखा है, वे ब्राउज़र को कोड को निष्पादित करना बंद कर सकते हैं यदि उसके पास कंसोल ऑब्जेक्ट नहीं है, और ऐसे बहुत से लाइव उपयोगकर्ता होंगे जिनके पास यह नहीं है, इसलिए लाइव उपयोगकर्ताओं के लिए समस्याएं उत्पन्न करने से सावधान रहें : सबसे अच्छी बात यह सुनिश्चित करना है कि आपने अपना कोड शिपिंग करने से पहले कंसोल पर अपनी सभी कॉल हटा दी हों।

+1

आईई 8 + में एक प्लग-इन/अतिरिक्त जेएस कोड के बिना कंसोल है क्योंकि एक तरह से गलत है। – epascarello

+0

@epascarello - काफी मेला, हालांकि यह मूल पोस्टर के लिए असफल रहा है। (उन्होंने यह निर्दिष्ट नहीं किया कि वह आईई का किस संस्करण का उपयोग कर रहा था, हालांकि)। [इसे और अधिक विशिष्ट बनाने के लिए मेरा जवाब संपादित किया गया] – Spudley

+0

कंसोल.लॉग के साथ लाइव कोड कभी भी शिप करने के लिए उल्लेख के लिए उपरोक्त। –

2

यदि कोई कंसोल उपलब्ध नहीं है तो मैं फ़ायरबग लाइट में विफलता के लिए उपयोग करता हूं। यह गारंटी देता है कि आपको कुछ विवरण का कंसोल मिलेगा, हालांकि वे सभी थोड़ा अलग तरीके से काम करते हैं इसलिए सावधान रहें।

function attachConsole(force) { 
    if(force || typeof console === "undefined"){ 
    var head= document.getElementsByTagName('head')[0]; 
    var script= document.createElement('script'); 
    script.type= 'text/javascript'; 
    script.src= 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'; 
    head.appendChild(script); 
    return true; 
    } 
return false; 
} 
संबंधित मुद्दे