javascript - सचेत करने के लिए आप कंसोल संदेश और त्रुटियों को कैसे भेज सकते हैं?




exception alert (2)

आप स्क्रिप्ट को अपनी कोशिश / पकड़ में लपेट कर सकते हैं, जैसे कुछ:

var doc=(frame.contentWindow.document || obj.contentDocument|| obj.contentWindow);
var head = doc.getElementsByTagName('head')[0];
var scriptElement = doc.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.text = "try{"+scripts+"}catch(e){console.error(e);alert('Found this error: ' + e +'. Check the console.')}"
head.appendChild(scriptElement);

मैं चेतावनी के लिए त्रुटियों को पारित करना चाहूंगा कि वे अपने कोड में गलती करने वाले उपयोगकर्ता को चेतावनी दें भले ही उनके पास कंसोल खुली नहीं हो।

    var doc=(frame.contentWindow.document || obj.contentDocument|| obj.contentWindow);
    var head = doc.getElementsByTagName('head')[0];
    var scriptElement = doc.createElement('script');
    scriptElement.setAttribute('type', 'text/javascript');
    scriptElement.text = scripts;

    try{
        head.appendChild(scriptElement);
    }
     catch(e){ alert("error:"+e.message +"  linenumber:"+e.lineNumber);}

एपेंड चाइल्ड एक त्रुटि फेंकता है जब स्क्रिप्ट में त्रुटि होती है यह सीधे कंसोल पर जाता है, और मैं इसे एक चेतावनी में प्रदर्शित करना चाहता हूं, क्योंकि यह बच्चों के लिए है और वे कंसोल की जांच नहीं कर सकते कोशिश पकड़ ब्लॉक त्रुटि पकड़ नहीं है। मैंने इसे eval (स्क्रिप्ट) के साथ की कोशिश की

   try{
   eval(scripts);} catch(e){ alert("error:"+e.message +"  linenumber:"+e.lineNumber);}

यह काम करता है लेकिन इसका मतलब है कि कोड दो बार निष्पादित होता है, और कुछ मामलों में यह बहुत असुविधाजनक है।

मैंने कंसोल को बंद करने की कोशिश की। आतंक:

       console.log=function(){alert("taking over the log");}
       console.error=function(){alert("taking over the log");}

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


ठीक है, ऐसा करने के लिए कम सुरुचिपूर्ण लेकिन बेहद कुशल तरीके से 'पुनर्रचना' आपके जन्मजात कंसोल फ़ंक्शन है। असल में कोई भी त्रुटि या चेतावनियां आपको एक जावास्क्रिप्ट फ़ंक्शन द्वारा आउटपुट की जा रही हैं जो परिचित console.log () फ़ंक्शन के समान है। कंसोल। Warn (), console.info () और console.error () के बारे में मैं बात कर रहा हूँ। अब चलो 'फिर से नक्शा' जो उनमें से प्रत्येक करते हैं:

//remap console to some other output
var console = (function(oldCons){
    return {
        log: function(text){
            oldCons.log(text);
            //custom code here to be using the 'text' variable
            //for example: var content = text;
            //document.getElementById(id).innerHTML = content
        },
        info: function (text) {
            oldCons.info(text);
            //custom code here to be using the 'text' variable
        },
        warn: function (text) {
            oldCons.warn(text);
            //custom code here to be using the 'text' variable
        },
        error: function (text) {
            oldCons.error(text);
           //custom code here to be using the 'text' variable
        }
    };
}(window.console));

//Then redefine the old console
window.console = console;

अब, आम तौर पर मैं उत्पादन की तरह कुछ इस तरह का उपयोग करने के बारे में अत्यधिक सलाह देता हूं और इसे डिबगिंग के उद्देश्य से सीमित करता हूं, लेकिन जब आप कंसोल के आउटपुट को दिखाते हुए एक कार्यक्षमता विकसित करने की कोशिश कर रहे हैं, तो रेखाएं धुंधली हैं, इसलिए मैं इसे छोड़ दूँगा आप पर निर्भर करता है।





console.log