alias para chrome console.log

Gostaria de saber por que o código a seguir não funciona no Google Chrome:

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

saída: Uncaught TypeError: invocação ilegal

obrigado.

Quando você escreve cl(); , você está chamando log no contexto global.

O console.log do Chrome não deseja ser chamado no object da window .

Em vez disso, você pode escrever

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

Isso irá chamar log no contexto do console .

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

Aparentemente, você também pode definir log:

  log = console.log.bind(console); 

e, em seguida, os números de linha também funcionam

Infelizmente a resposta @SLaks não é aplicada ao IE porque usa o object window como contexto no console.log-method.

Eu seria sugerir uma outra maneira que não depende do navegador:

 !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. }; 
    Intereting Posts