2011-02-27 10 views
19
console.log

मुझे पता है क्यों पालन कोड गूगल क्रोम में काम नहीं करता चाहते हैं:उर्फ ​​क्रोम को

// creates a xss console log 

var cl = (typeof(console) != 'undefined') ? console.log : alert; 
cl('teste'); 

उत्पादन: Uncaught TypeError: अवैध मंगलाचरण

धन्यवाद।

+0

मैं सिर्फ एक समान समस्या है, जहां मैं 'console.log' विधि ओवरराइड करने के लिए चाहता था भर में भाग गया (पकड़ने और उत्पादन भेजने के लिए):

मैं एक और तरीका है कि does not ब्राउज़र पर निर्भर करते हैं का सुझाव होगा। मेरा समाधान 'कंसोल' ऑब्जेक्ट पर उपनाम घोषित करना था। लगभग: 'कंसोल .__ लॉग = console.log; console.log = function() {__ console.log.apply (कंसोल, तर्क);};'। –

उत्तर

30

जब आप cl(); लिखते हैं, तो आप वैश्विक संदर्भ में log पर कॉल कर रहे हैं।

क्रोम का console.logwindow ऑब्जेक्ट पर कॉल नहीं करना चाहता है।

इसके बजाय, आप लिख सकते हैं

cl = function() { return console.log.apply(console, arguments); }; 

यह console के संदर्भ में log कॉल करेंगे।

+0

तो, मैं यह कैसे कर सकता हूं? – augustowebd

+0

धन्यवाद Slaks, यह बहुत अच्छी तरह से काम करता है! – augustowebd

+5

@augustowebd: इस "संदर्भ" चीज़ के बारे में अधिक जानकारी के लिए, मैंने कुछ ब्लॉग पोस्ट लिखे हैं जो उपयोगी हो सकते हैं: * [पौराणिक तरीकों] (http://blog.niftysnippets.org/2008/03/mythical- method.html) * और * [आपको 'यह'' याद रखना होगा (http://blog.niftysnippets.org/2008/04/you-must-remember-this.html) * –

26

https://groups.google.com/a/chromium.org/d/msg/chromium-bugs/gGVPJ1T-qA0/F8uSupbO2R8J

जाहिर है आप भी परिभाषित कर सकते हैं लॉग:

log = console.log.bind(console); 

और फिर लाइन नंबर भी काम

+0

मैं तुमसे प्यार करता हूँ, यह मुझे – Kevin

+0

के लिए मुझे पागल कर रहा है अंततः इसके लिए एक समाधान! धन्यवाद: डी –

2

दुर्भाग्य नहीं है आईई के लिए लागू करवाना @SLaks क्योंकि यह संदर्भ के रूप में खिड़की-वस्तु का उपयोग करता है console.log-method में।

!window.console && (console = {}); 

console.debug = console.debug || $.noop; 
console.info = console.info || $.noop; 
console.warn = console.warn || $.noop; 
console.log = console.log || $.noop; 

var src = console, desc = {}; 
desc.prototype = src; 
console = desc; 

desc.log = function(message, exception) { 
    var msg = message + (exception ? ' (exception: ' + exception + ')' : ''), callstack = exception && exception.stack; 
    src.log(msg); 
    callstack && (src.log(callstack)); 
    //logErrorUrl && $.post(logErrorUrl, { message: msg + (callstack || '') }); // Send clientside error message to serverside. 
}; 
संबंधित मुद्दे