Перехват событий консоли

212
06 марта 2019, 17:10

Всем привет,как мне перехватить события консоли вида info,log,warn,error вот таким способом

 function takeOverConsole(){
        var console = window.console;
        if (!console) return
        function intercept(method){
            var original = console[method];
            console[method] = function(){
                // do sneaky stuff
                if (original.apply){
                    // Do this for normal browsers
                    original.apply(console, arguments)
                }else{
                    // Do this for IE
                    var message = Array.prototype.slice.apply(arguments).join(' ');
                    original(message)
                }
            }
        }
        var methods = ['log','info', 'warn', 'error'];
        for (var i = 0; i < methods.length; i++)
            intercept(methods[i])
    }

и передать эти события в метод window.test.setLog(obj) а сам объект должен быть вида

obj = {
type:error
message:'сообщение',
type:warn
message:'сообщение'
и т.д
}
Answer 1

Для IE не поддерживающего Function.prototype.apply() сообщение будет объединением аргументов в строку, для поддерживающих браузеров - псевдомассив аргументов "arguments".

function takeOverConsole () { 
  var console = window.console 
 
  if (!console) return 
 
  function intercept (method) { 
    var original = console[method] 
 
    console[method] = function () { 
      var message 
      // do sneaky stuff 
      if (original.apply) { 
        // Do this for normal browsers 
        original.apply(console, arguments) 
         
        message = arguments 
      } else { 
        // Do this for IE 
        message = Array.prototype.slice.apply(arguments).join(' ') 
 
        original(message) 
      } 
       
      var obj = { 
        type: method, 
        message: message 
      } 
       
      // тут доступен obj 
      alert(obj.type) 
    } 
  } 
  var methods = ['log', 'info', 'warn', 'error'] 
 
  for (var i = 0; i < methods.length; i++) { 
    intercept(methods[i]) 
  } 
} 
 
takeOverConsole(); 
 
window.console.log(123)

READ ALSO
Есть форма. Как сделать перевод каретки с одного инпута на другой, если выполнилось определенное условие? [закрыт]

Есть форма. Как сделать перевод каретки с одного инпута на другой, если выполнилось определенное условие? [закрыт]

Как сделать так, чтобы при введении 2 чисел в <input id = "h"> каретка перемещалась на следующий инпут <input id = "m">?

172
Добавление иконки в input

Добавление иконки в input

Есть разметка:

177