Prowadzę witrynę ASP.NET, w której mam problemy ze znalezieniem błędów JavaScript tylko podczas ręcznego testowania.
Czy istnieje możliwość wyłapania wszystkich błędów JavaScript po stronie klienta i zalogowania ich na serwerze, tj. W dzienniku zdarzeń (przez usługę sieciową lub coś w tym rodzaju)?
javascript
logging
error-handling
MADMap
źródło
źródło
Odpowiedzi:
Możesz spróbować skonfigurować własną procedurę obsługi zdarzenia onerror i użyć XMLHttpRequest, aby powiedzieć serwerowi, co poszło nie tak, jednak ponieważ nie jest to część żadnej specyfikacji, obsługa jest nieco niestabilna .
Oto przykład z używania XMLHttpRequest do rejestrowania błędów JavaScript :
źródło
setInterval
metodzie. W sieci dostępnych jest wiele usług raportowania błędów JS. Checkout ErrLytics . Zapewnia również analizę każdego działania użytkownika w Twojej witrynie.Krótka odpowiedź: tak, jest to możliwe.
Dłuższa odpowiedź: ludzie już pisali o tym, jak możesz (przynajmniej częściowo) rozwiązać ten problem, pisząc własny kod. Należy jednak pamiętać, że istnieją usługi, które wydają się zapewniać, że potrzebny kod JS działa w wielu przeglądarkach. Znalazłem następujące:
Nie mogę wypowiadać się w imieniu żadnej z tych usług, ponieważ jeszcze ich nie wypróbowałem.
źródło
Właśnie zaimplementowałem rejestrowanie błędów po stronie serwera na błędach javascript w projekcie w pracy. Istnieje mieszanka starego i nowego kodu używającego jQuery .
Używam kombinacji
window.onerror
i opakowując programy obsługi zdarzeń jQuery i funkcję onready z funkcją obsługi błędów (patrz: JavaScript Error Tracking: Why window.onerror Is Not Enough ).window.onerror
: łapie wszystkie błędy w IE (i większość błędów w Firefoksie), ale nic nie robi w Safari i Operze.Po złapaniu błędu dodaję do niego kilka dodatkowych właściwości (adres URL, przeglądarka itp.), A następnie wysyłam go z powrotem na serwer za pomocą wywołania Ajax.
Na serwerze mam małą stronę, która po prostu pobiera przesłane argumenty i wyprowadza je do naszej normalnej struktury rejestrowania serwera.
Chciałbym otworzyć kod źródłowy tego (jako wtyczka jQuery). Jeśli ktoś jest zainteresowany, daj mi znać, pomogłoby to przekonać szefów!
źródło
Jeśli korzystasz z Google Analytics, możesz rejestrować błędy javascript w zdarzeniach Google Analytics.
Zobacz tę aplikację: http://siteapps.com/app/log_javascript_errors_with_ga-181
Mam nadzieję, że to pomoże.
źródło
Polecam również użycie narzędzia TraceTool , jest ono wyposażone w obsługę JavaScript i jest bardzo przydatne do monitorowania JS.
źródło
Jeśli chcesz rejestrować błędy po stronie klienta z powrotem na serwerze, będziesz musiał wykonać jakiś rodzaj przetwarzania serwera. Najlepszym rozwiązaniem byłoby posiadanie usługi sieciowej, do której można uzyskać dostęp za pośrednictwem JavaScript (AJAX) i przekazywać do niej informacje z dziennika błędów.
Nie rozwiązuje problemu w 100%, ponieważ jeśli problem dotyczy serwera internetowego obsługującego usługę sieciową, w której masz kłopoty, inną opcją byłoby wysłanie informacji za pośrednictwem standardowej strony za pomocą ciągu zapytania. Jedna metoda robi to poprzez dynamiczne generowanie tagów obrazu (które są następnie usuwane), gdy przeglądarka będzie próbowała załadować źródło obrazu. Dobrze radzi sobie jednak z wywołaniami JavaScript między domenami. Pamiętaj, że masz kłopoty, jeśli ktoś ma wyłączone obrazy;)
źródło
Ostatnio używam Appfail , który rejestruje błędy asp.net i JavaScript
źródło
Możesz potencjalnie wykonać wywołanie Ajax do serwera z próby / catch, ale to prawdopodobnie najlepsze, co możesz zrobić.
Czy mogę zamiast tego zaproponować testy jednostkowe JavaScript? Prawdopodobnie z JSUnit ?
źródło