2014-05-23 6 views
4

Если я получаю сообщение об ошибке из фреймворка или ошибки в браузере. В принципе, ошибка времени выполнения. Без изменения рамки я могу переопределить журналы консоли, которые эти фреймворки делают, и ошибки браузера. Я хочу использовать свою собственную фреймворк с собственной системой обработки ошибок при информировании пользователя об ошибках практически любого времени выполнения (а не синтаксических ошибок). Я не знаю, будете ли вы классифицировать все это как ошибки времени выполнения из-за того, как javascript выполняется в браузере, но, надеюсь, вы меня получите?Возможно ли переопределить журналы консоли

Возможно ли это, если все фреймворки написаны на Javascript?

Как это достигается?

Какие соображения я должен делать между разными браузерами?

Благодаря

ответ

0

Вы можете попробовать переопределить функцию console.log().

//Save original reference 
var originalConsole = console; 
//Override 
console = {}; 
console.log = function() 
{ 
    //According to MDN the console.log function can receive a variable number of params 
    for(var i=0; i<arguments.length; i++) 
    { 
     //Make your changes here, then call the original console.log function 
     originalConsole.log("Change something: "+arguments[i]); 
    } 
    //Or maybe do something here after parsing all the arguments 
    //... 
} 

console.log("one", "two"); 

JSFiddle here.

+0

впечатлило, спасибо. – user3561274

1

Вы, вероятно, ищете try-catch block:

try { 
    alert(foo); 
} catch(e) { 
    alert('The code got the following error: '+e.message); 
} 

Всякий раз, когда код между try {} получает ошибку, catch(e) {} блока будет выполняться с аргументом e, являющегося объектом ошибки для ошибки, которая произошла. В этом случае переменная foo не определена, поэтому выполнение этого кода приведет к встревоженному сообщению о том, «кода получил следующее сообщение об ошибке: Foo не определен»

0

Вы можете переопределить журналы консоли путем создания «консоль» объект и переопределение это .log функция():

var console = {}; 
console.log = function(){}; 

Некоторые браузеры требуют, чтобы это было добавлено к окну объекта напрямую; так, для совместимости браузера, а также добавить:

window.console = console; 

Кроме того, вы можете изменить другие функции консоли (например, console.info, console.warn и console.error), если вы используете их тоже.

Кроме того, рассмотрите возможность чтения this blog post от Udi Talias по переопределению функций консоли. Хорошее и быстрое чтение!

1

В то время как не превышение console.log, вы можете добиться такого же эффекта, переопределив window.onerror.

Из MDN documentation

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { 
    // Log the error here -- perhaps using an AJAX call 
} 
Смежные вопросы