2011-06-23 26 views
5

सुनना मैं console.log() के लिए श्रोता सेट करना चाहता हूं और डिफ़ॉल्ट व्यवहार को रोकने के बिना संदेश के साथ कुछ करना चाहता हूं। तो, देव उपकरणों के कंसोल को संदेश भी मिलना चाहिए। कोई विचार?कंसोल.लॉग

उत्तर

8

कभी भी वेबपृष्ठ में यह कोशिश नहीं की, लेकिन यह एक ब्राउज़र प्लगइन में काम करता है (जहां सुरक्षा कारणों से जावास्क्रिप्ट अधिकार समान नहीं हैं)।

आप निश्चित कुछ इस तरह के लिए जा सकते हैं:

(function(){ 

    var originallog = console.log; 

    console.log = function(txt) { 
     // Do really interesting stuff 
     alert("I'm doing interesting stuff here !"); 

     originallog.apply(console, arguments); 
    } 

})(); 

जावास्क्रिप्ट में अजीब बात यह है कि समारोह है भी वस्तुओं रहे हैं: डी

+0

ऐसा लगता है कि '' console.log' console' वस्तु के बाहर काम नहीं कर सकता - शायद यह 'this' चर पर निर्भर करता है। साथ ही, मैं मज़ेदार वस्तुओं के रूप में कार्य करने पर विचार नहीं करता हूं: यह वह चीज है जो इस भाषा को शानदार बनाता है। –

+0

आप सही हैं! मैंने अपना जवाब संपादित किया। हम दोनों एक महान जवाब के लिए आएंगे;) – deadalnix

+0

यह अच्छा है। +1 –

2

यह एक छोटा हैक है, लेकिन मैं वहाँ यकीन नहीं है एक बेहतर समाधान है:

console._log_old = console.log 
console.log = function(msg) { 
    alert(msg); 
    console._log_old(msg); 
} 
+0

उस समाधान के साथ समस्या यह है कि इसका वैश्विक दायरा पर दुष्प्रभाव है। वैश्विक समाधान में बजाय स्थानीय चर में console._log_old को स्टोर करने के लिए एक बेहतर समाधान है। – deadalnix

+0

@deadalnix जो काम नहीं करेगा, आपकी पोस्ट –

+0

पर मेरी टिप्पणी देखें हाँ, यह लागू करने का उपयोग करेगा;) मेरा संपादित उत्तर देखें। वैसे भी इस बिंदु को बनाने के लिए धन्यवाद, यह पिछले संस्करण में सच था और मैंने पहली बार यह नहीं देखा था। – deadalnix