2013-04-24 2 views
25

Я пытаюсь добавить событие onerror на свой сайт.window.onerror не работает в chrome

window.onerror = function() { 
    alert("an error"); 
} 

Но я получаю это:

notThere(); 
ReferenceError: notThere is not defined 

Что мне не хватает?

Браузер: Chrome 26.0.1410.64 м

Шаги для воспроизведения:

  • добавить код в консоль.
  • добавить notThere() в консоли

ответ

25

В window.onerror работает в Chrome (см jsfiddle - http://jsfiddle.net/PWSDF/), но, видимо, не в консоли - что делает какой-то смысл.

+20

какой смысл делать? –

+3

Я предполагаю, что это приведет к ошибкам, а не к их отображению в консоли. – Lachezar

14

Некоторые другие причины, по которым вы не можете быть в состоянии обрабатывать ошибки в window.onerror (кроме указанных единиц):

  • Другие комплекты библиотек window.onerror после вас.
  • Если вы используете Angular, ошибки не пройдут через window.onerror. Вы должны обращаться с ними с помощью этого завода:

    .factory('$exceptionHandler', function() { 
         return function errorCatcherHandler(exception, cause) { 
          console.error(exception); 
          if (window.OnClientError) window.OnClientError(exception); 
         }; 
        }) 
    

См:

https://docs.angularjs.org/api/ng/service/ $ ExceptionHandler

http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html