2013-04-24 40 views
25

Tôi đang cố gắng thêm sự kiện onerror vào trang web của mình.window.onerror không hoạt động trong chrome

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

Nhưng tất cả tôi nhận được là:

notThere(); 
ReferenceError: notThere is not defined 

tôi thiếu gì?

Trình duyệt: Chrome 26.0.1410.64 m

bước để tái sản xuất:

  • thêm mã vào giao diện điều khiển.
  • thêm notThere() để giao diện điều khiển

Trả lời

25

Các window.onerror công trình trong Chrome (xem jsfiddle - http://jsfiddle.net/PWSDF/), nhưng dường như không có trong giao diện điều khiển - mà làm cho một số ý nghĩa.

+20

gì ý nghĩa nào thì nên? –

+3

Tôi đoán, nó sẽ cướp các lỗi thay vì hiển thị chúng trong bảng điều khiển. – Lachezar

14

Một số nguyên nhân khác mà bạn có thể không có khả năng xử lý các sai sót trong window.onerror (ngoài những người được đề cập):

  • Một bộ thư viện khác window.onerror sau bạn.
  • Nếu bạn đang sử dụng Góc, các lỗi sẽ không đi qua window.onerror. Bạn phải xử lý chúng bằng nhà máy này:

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

Xem:

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

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

Các vấn đề liên quan