2009-02-13 43 views
14

Có cách nào để nhận phản hồi tự động không nếu xảy ra lỗi (ngay cả lỗi cú pháp) khi chạy JavaScript ở phía máy khách?Phản hồi tự động về lỗi JavaScript

Tôi đã nghĩ đến một cái gì đó như thế này:

<script src="debugger.js"></script> 
<script> 
    // some script with an error in it 
</script> 

Và mỗi lần trình gỡ lỗi thông báo lỗi nó sẽ gửi một thông tin phản hồi đến máy chủ.

Trả lời

16

EDIT: Tôi hiểu lầm câu hỏi của bạn ban đầu, điều này sẽ làm việc:

Cũng lưu ý, điều này cần phải đi bất kỳ TRƯỚC javascript mà có thể gây ra lỗi.

window.onerror = function(msg,u,l) 
{ 
    txt ="Error: " + msg + "\n"; 
    txt+="URL: " + u + "\n"; 
    txt+="Line: " + l + "\n\n"; 
    //Insert AJAX call that passes data (txt) to server-side script 
    return true; 
}; 

Vì lỗi cú pháp, bạn không may mắn. Javascript chỉ đơn giản là chết khi có lỗi cú pháp. Không có cách nào để xử lý nó cả.

+0

Tôi cũng đã nghĩ về điều đó. Nhưng có vẻ như chỉ Firefox thực hiện điều này. Safari và Opera đều giữ im lặng khi tôi cố cảnh báo tin nhắn. – Gumbo

+0

Ok, có lẽ chỉ là cảnh báo không hoạt động. In thông báo lỗi. Tôi nghĩ là vậy. Cảm ơn. – Gumbo

+0

Hoạt động trong FF. Để làm cho nó hoạt động trong IE, bạn phải vô hiệu hóa gỡ lỗi script trong tab nâng cao của các tùy chọn internet. Tôi không có nó để làm việc trong Chrome hay Opera. – some

4

Tôi không chắc chắn về lỗi cú pháp nhưng có thể gặp lỗi js khi sử dụng sự kiện window.onerror. Tìm kiếm "lỗi ghi nhật ký trong javascript" trong google cung cấp cho bạn rất nhiều kết quả ...

Ghi lỗi JavaScript vào ASP.NET: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (Thật không may là liên kết tải xuống trong bài đăng bị hỏng).

Logging lỗi Client Side hoạt Javascript để Server: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx

JavaScript Lỗi Notifications: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx

0

window.onerror = MyFunction (msg, url, dòng);

chúng tôi bật lên một cửa sổ có chi tiết lỗi, loại trình duyệt (tức là navigator.userAgent), v.v. trong tất cả các trường được đánh dấu READONLY và mời người dùng Gửi chúng.

Chúng tôi có một hộp kiểm "Không hiển thị lại lần nữa" được lưu trữ trong cookie phiên - vì vậy nếu chúng tiếp tục gặp lỗi hơn có thể tắt Popup.

Mặc dù thực tế rằng chúng tôi nghĩ rằng điều này "rất tuyệt", chúng tôi nhận được rất ít báo cáo - và tôi không tin rằng đó là vì chúng tôi gặp phải lỗi thời gian chạy bằng không!

9

Một kỹ thuật là sử dụng Ajax cho Javascript error logging

Mỗi javascript lỗi có thể bị mắc kẹt trong sự kiện window.onerror. Chúng ta có thể trả về true hoặc false để chúng ta có thể chọn nếu người dùng sẽ thấy hộp thoại lỗi javascript bình thường. Kịch bản này sẽ, trong trường hợp rất khó xảy ra lỗi javascript, thu thập thông tin về lỗi và gửi một httprequest đến một trang sẽ đăng nhập lỗi javascript vào cơ sở dữ liệu.

+0

Tôi đang tìm kiếm trang đó .. +1 –

+0

Cảm ơn bạn đã liên kết đến chức năng hữu ích này. Tôi sẽ thử nó. – Gumbo

0

Có lẽ tốt nhất là chỉ gửi một báo cáo lỗi trên mỗi trang. Nếu bạn nhận được một lỗi trên một bộ đếm thời gian lặp đi lặp lại, hoặc AJAX chính nó đệ quy gọi một lỗi, bạn có thể kết thúc làm đầy đăng nhập của bạn với rác vô dụng.

Ngoài ra, được chuẩn bị để nhận lỗi nan giải do những thứ như:

  • proxy an ninh lừa gạt chính mã của bạn
  • kịch bản từ các trang web bị chặn
  • lỗi trình duyệt chrome không quan trọng từ phần mở rộng
  • IE Mobile , trình duyệt tồi tệ nhất trên thế giới
+1

ROFL @ IE Mobile –

0

Cách dễ nhất để tôi cài đặt pp từ SiteApps Marketplace:

http://siteapps.com/app/log_javascript_errors_with_ga-181

Một khi bạn đã cài đặt thẻ nền tảng, bạn có thể cài đặt nhiều ứng dụng và một ở trên là rất hữu ích cho tôi. Tôi sử dụng nó trong 14 trang web mà tôi đã phát triển và tôi có thể theo dõi lỗi javascript trong Google Analytics.

Hy vọng điều này có thể hữu ích.

Leandro

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