javascript - पता लगाना कि कंसोल उपलब्ध है या नहीं




debugging (8)

कंसोल को सुरक्षित रूप से आउटपुट करने का एक अच्छा सरल और छोटा तरीका निम्नानुसार है:

window.console && console.log('Debug message');

मैं सोच रहा था, अगर कंसोल ऑब्जेक्ट उपलब्ध है तो मैं जावास्क्रिप्ट के साथ कैसे पता लगा सकता हूं?

मुझे समस्या है कि अगर मैं console.log('sthg') जैसे डीबग आउटपुट को हटाना भूल जाता हूं तो मुझे console.log('sthg') , या समान, सक्रिय होने पर कई ब्राउज़रों में त्रुटियां मिलती हैं।

मदद के लिए धन्यवाद

उस समस्या के बगल में मैं कंसोल ऑब्जेक्ट के बारे में सभी सूचनाओं में रूचि रखता हूं। क्या कोई दस्तावेज लिंक है, या तो? क्या यह एक मानक है? और इसी तरह...


सबसे आसान तरीका होगा:

if (window.console){
   console.log('do something');
}

सिर्फ लिखने के बजाय:

console.log('do something');

फायरबग द्वारा परिभाषित, आईई 8 (एफ 12 के साथ डेवलपर टूल्स खोलने की जरूरत है), क्रोम, आदि लेकिन इसके लिए कोई परिभाषित स्पेक नहीं है। एक console.log wrapper है जो इसे उपयोग करने में बहुत आसान बनाता है, ब्राउज़र लॉगिंग समाधान पार करें ताकि यदि कंसोल मौजूद न हो तो आपका कोड विस्फोट नहीं होता है।


शायद...

if (console) {
    // do stuff
}

try{
console.log("test")
}
catch(e){
console={},
console.log=function(a){}
}

बस इसे अपनी जेएस फ़ाइल के शीर्ष पर रखें और फिर console.log () का उपयोग करें; ब्राउज़र त्रुटि के लिए किसी भी चिंता के बिना, आईई 9 में भी यह त्रुटि थी


इससे पहले कि मैं कुछ और लोड करता हूं, मैं हमेशा इसे अपने एचटीएमएल-हेडर के शीर्ष में शामिल करता हूं। Console.debug के साथ डिबगिंग मेरे लिए बहुत लंबा है। और मैं इन कंसोल फ़ंक्शंस के उपयोग को टॉगल करना चाहता हूं।

पता नहीं कैसे कोड अनुकूलित किया गया है, लेकिन यह हमेशा काम करता है।

(function() {
    var consoleDisabled = false;
    if (consoleDisabled) {
        window.console = undefined;
    }
    if (window.console == undefined) {
        window.console = {
            debug: function() {
                return true;
            },
            info: function() {
                return false;
            },
            warn: function() {
                return false;
            },
            log: function() {
                return false;
            }
        }
    }
    debug = (function(args) {
        window.console.debug(args);
    });
    info = (function(args) {
        window.console.info(args);
    });
    warn = (function(args) {
        window.console.warn(args);
    });
    log = (function(args) {
        window.console.log(args);
    });
})();
debug(somevar);
info(somevar);
warn(somevar);
log(somevar);

यहां मैं क्या उपयोग करता हूं। ध्यान रखें कि मैं कंसोल के लिए कोई समर्थन नहीं के साथ केवल आधे दिल से समर्थित ब्राउज़र हैं। और मैं केवल console.log () का उपयोग करता हूं, लेकिन आप देख सकते हैं कि इसे console.dir (), console.info () आदि का समर्थन करने के लिए कैसे बढ़ाया जा सकता है।

var console = console || {
    "log": function(stuff) {}
};

मुझे यह पसंद है क्योंकि इसे कॉल करने से कोई त्रुटि नहीं होती है, लेकिन यह [अपरिभाषित] लौटाता है, जो मुझे लगता है कि उचित है।

ध्यान दें कि (और बाद में) कई लोगों ने समान पॉलीफिल लिखे हैं:

https://gist.github.com/search?q=console+%7C%7C+console


मैंने यह बहुत ही सरल फ़ॉर्मेटर बनाया है, यह कट / एन / पेस्टेबल (नेटर संस्करण के साथ अपडेट किया गया है):

function DateFmt(fstr) {
  this.formatString = fstr

  var mthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  var dayNames = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
  var zeroPad = function(number) {
     return ("0"+number).substr(-2,2);
  }

  var dateMarkers = {
    d:['getDate',function(v) { return zeroPad(v)}],
    m:['getMonth',function(v) { return zeroPad(v+1)}],
    n:['getMonth',function(v) { return mthNames[v]; }],
    w:['getDay',function(v) { return dayNames[v]; }],
    y:['getFullYear'],
    H:['getHours',function(v) { return zeroPad(v)}],
    M:['getMinutes',function(v) { return zeroPad(v)}],
    S:['getSeconds',function(v) { return zeroPad(v)}],
    i:['toISOString']
  };

  this.format = function(date) {
    var dateTxt = this.formatString.replace(/%(.)/g, function(m, p) {
      var rv = date[(dateMarkers[p])[0]]()

      if ( dateMarkers[p][1] != null ) rv = dateMarkers[p][1](rv)

      return rv

    });

    return dateTxt
  }

}

fmt = new DateFmt("%w %d:%n:%y - %H:%M:%S  %i")
v = fmt.format(new Date())

http://snipplr.com/view/66968.82825/





javascript debugging