debugging practice - JavaScript:كيف أقوم بطباعة رسالة إلى وحدة التحكم بالأخطاء؟




keyword console (15)

كيف يمكنني طباعة رسالة إلى وحدة التحكم بالأخطاء ، ويفضل أن تتضمن متغيراً؟

على سبيل المثال ، شيء من هذا القبيل:

print('x=%d', x);

Answers

console.log('console.log'); //to print log message
console.info('console.info'); //to print log message 
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error

To Print Error:- console.error('x=%d', x);

أبسط طريقة للقيام بذلك هي:

console.warn("Text to print on console");

قم بتثبيت Firebug ومن ثم يمكنك استخدام console.log(...) و console.debug(...) وما إلى ذلك (راجع الوثائق لمعرفة المزيد).


ملاحظة حول "رمي ()" المذكورة أعلاه. يبدو أنه يتوقف عن تنفيذ الصفحة تمامًا (لقد قمت بالتدقيق في IE8) ، لذلك ليس من المفيد جدًا تسجيل "العمليات الجارية" (مثل تتبع متغير معين ...)

قد يكون اقتراحي لإضافة عنصر نص في مكان ما في المستند الخاص بك وتغيير (أو إلحاق) قيمته (التي من شأنها تغيير نصها) لتسجيل المعلومات كلما لزم الأمر ...



للإجابة على السؤال:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

بدلاً من الخطأ ، يمكنك أيضًا استخدام المعلومات أو تسجيل الدخول أو التحذير.



إذا كنت تستخدم Firebug وتحتاج إلى دعم IE أو Safari أو Opera أيضًا ، فإن Firebug Lite يضيف الدعم console.log () إلى هذه المتصفحات.


يدعم WebKit Web Inspector أيضًا واجهة برمجة تطبيقات وحدة التحكم Firebug's (مجرد إضافة بسيطة إلى إجابة دان ).


console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message

يمكنك أيضًا إضافة CSS إلى رسائل التسجيل الخاصة بك:

console.log('%c My message here', "background: blue; color: black; padding-left:10px;");

كما هو الحال دائمًا ، يعتبر Internet Explorer هو الفيل الكبير في rollerskates التي تمنعك بمجرد استخدام console.log() .

يمكن تعديل سجل jQuery بسهولة تامة ، ولكن يجب أن تضيفه إلى كل مكان. حل واحد إذا كنت تستخدم jQuery هو وضعه في ملف jQuery الخاص بك في النهاية ، يتم تبسيطه أولاً:

function log()
{
    if (arguments.length > 0)
    {
        // Join for graceful degregation
        var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];

        // This is the standard; Firebug and newer WebKit browsers support this.
        try {
            console.log(args);
            return true;
        } catch(e) {
            // Newer Opera browsers support posting erros to their consoles.
            try {
                opera.postError(args);
                return true;
            } 
            catch(e) 
            {
            }
        }

        // Catch all; a good old alert box.
        alert(args);
        return false;
    }
}

فيما يلي حل للسؤال الحرفي لكيفية طباعة رسالة إلى وحدة تحكم الخطأ في المستعرض ، وليس وحدة التحكم في المصحح. (قد يكون هناك أسباب جيدة لتجاوز مصحح الأخطاء.)

كما أشرت في التعليقات حول اقتراح لرمي خطأ للحصول على رسالة في وحدة تحكم الخطأ ، مشكلة واحدة هي أن هذا سوف يقطع مؤشر ترابط التنفيذ. إذا كنت لا تريد مقاطعة سلسلة المحادثات ، فيمكنك رمي الخطأ في مؤشر ترابط منفصل ، واحد تم إنشاؤه باستخدام setTimeout. ومن هنا الحل الخاص بي (والذي تبين أنه من تفصيل واحد من قبل إيفو Danihelka):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

أقوم بتضمين الوقت بالمللي ثانية منذ وقت البدء لأن المهلة قد تفسد الترتيب الذي تتوقع أن ترى الرسائل به.

الوسيطة الثانية إلى الأسلوب Error هي اسم الملف ، وهي سلسلة فارغة هنا لمنع إخراج اسم الملف ورقم السطر عديم الفائدة. من الممكن الحصول على وظيفة المتصل ولكن ليس بطريقة المستعرض البسيط المستقل.

سيكون من الرائع إذا تمكنا من عرض الرسالة مع رمز تحذير أو رسالة بدلاً من رمز الخطأ ، ولكن لا يمكنني العثور على طريقة للقيام بذلك.

هناك مشكلة أخرى في استخدام الرمية وهي أنه يمكن ضبطها وإلقائها بعيدًا عن طريق محاولة الإمساك بها ، كما أن وضع الرمية في خيط منفصل يجنب هذه العقبة أيضًا. ومع ذلك ، توجد طريقة أخرى يمكن اكتشاف الخطأ ، وهو ما إذا تم استبدال معالج window.onerror باستخدام معالج مختلف. لا يمكن أن تساعدك هناك.


لا تتم طباعة هذا إلى وحدة التحكم ، ولكن سيفتح لك تنبيه منبثق برسالة قد يكون مفيدًا لبعض التصحيح:

فقط افعل:

alert("message");

يتم تسجيل الاستثناءات في وحدة تحكم جافا سكريبت. يمكنك استخدام ذلك إذا كنت تريد الاحتفاظ بـ Firebug معطلاً.

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

الاستعمال:

log('Hello World');
log('another message');

هناك الكثير من الطرق للقيام بذلك.

// window.location
window.location.replace('http://www.example.com')
window.location.assign('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/path'

// window.history
window.history.back()
window.history.go(-1)

// window.navigate; ONLY for old versions of Internet Explorer
window.navigate('top.jsp')


// Probably no bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';

// jQuery
$(location).attr('href','http://www.example.com')
$(window).attr('location','http://www.example.com')
$(location).prop('href', 'http://www.example.com')




javascript debugging