2009-02-13 11 views
14

Czy istnieje sposób uzyskania automatycznego sprzężenia zwrotnego, jeśli wystąpi błąd (nawet błędy składniowe) podczas uruchamiania JavaScript po stronie klienta?Automatyczne zgłaszanie błędów JavaScriptu

Myślałam o czymś tak:

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

I za każdym razem debugger zauważy błąd wysyła informacje zwrotne do serwera.

Odpowiedz

16

EDIT: I zrozumiał swoje pytanie początkowo, to powinno działać:

Należy również pamiętać, to musi iść przed jakimkolwiek JavaScript, który może powodować błędy.

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; 
}; 

Jeśli chodzi o błędy składni, nie masz szczęścia. JavaScript po prostu umiera, gdy wystąpi błąd składni. W żaden sposób nie można tego znieść.

+0

Myślałem o tym też. Wygląda jednak na to, że Firefox to robi. Safari i Opera milczą, gdy próbuję ostrzec wiadomość. – Gumbo

+0

OK, może to tylko alert, który nie działa. Drukuje komunikat o błędzie. Myślę, że to wszystko. Dzięki. – Gumbo

+0

Działa w FF. Aby uruchomić go w IE, należy wyłączyć debugowanie skryptów w zaawansowanej zakładce opcji internetowych. Nie mam go do pracy w Chrome ani w Operze. – some

4

Nie jestem pewien co do błędów składni, ale można złapać błędy js za pomocą zdarzenia window.onerror. Szukając „błędy zalogowaniu Javascript” w google daje wiele wyników ...

Rejestrowanie błędów JavaScript do ASP.NET: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (niestety link do pobrania w poście jest uszkodzony).

Logowanie błędów JavaScript po stronie klienta do serwera: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx

JavaScript Powiadomienia o błędach: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx

0

window.onerror = MyFunction (MSG, url, linia);

Wyskakujemy okno ze szczegółami błędu, typem przeglądarki (np. Navigator.userAgent) itd. Wszystkie w polach oznaczonych READONLY i zapraszając użytkownika do ich przesłania.

Mamy pole wyboru "Nie pokazuj tego ponownie", które jest przechowywane w pliku cookie sesji - więc jeśli nadal pojawiają się błędy, niż można wyłączyć wyskakujące okienko.

Pomimo tego, że uważaliśmy, że jest to "fajne", otrzymujemy bardzo niewiele raportów - i nie jestem przekonany, że dzieje się tak dlatego, że zbliżamy się do zerowych błędów środowiska wykonawczego!

9

Jedną z technik jest użycie Ajax do Javascript error logging

javascript Każdy błąd może być uwięziony w przypadku window.onerror. Możemy zwrócić wartość true lub false, abyśmy mogli wybrać, czy użytkownik powinien zobaczyć normalne okno dialogowe błędu javascript. Ten skrypt, w bardzo mało prawdopodobnym przypadku błędu javascript, zbierze informacje o błędzie i wyśle ​​zapytanie http na stronę, która zarejestruje błąd javascript w bazie danych.

+0

Szukałem tej strony .. +1 –

+0

Dzięki za link do tej przydatnej funkcji. Spróbuję tego. – Gumbo

0

Prawdopodobnie najlepiej wysłać tylko jeden raport o błędzie na stronę. Jeśli pojawi się błąd powtarzającego się licznika czasu lub sam AJAX wywoła błąd, możesz zakończyć wypełnianie dziennika niepotrzebnymi śmieciami.

też być przygotowany do odbioru nierozwiązywalne błędy spowodowane przez takie rzeczy jak:

  • proxy bezpieczeństwa diddling z kodem
  • skrypty z zablokowanych witryn
  • nieistotnych błędów przeglądarka Chrome z rozszerzeniami
  • IE Mobile , najgorsza przeglądarka na świecie
+1

ROFL @ IE Mobile –

0

Najprostszym sposobem dla mnie było zainstalowanie tego pp z SiteApps Marketplace:

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

Po zainstalowaniu tagu platformy, można zainstalować wiele aplikacji i powyżej nich jest bardzo przydatne dla mnie. Używam go w 14 witrynach, które opracowałem i mogłem śledzić błędy javascript w Google Analytics.

Mam nadzieję, że to pomoże.

Leandro