2010-04-12 34 views
7

由於大多數生產環境我們都設置了一些東西,以便在我們的Web應用程序中發送錯誤時向我們發送通知。現在的問題是,這隻涵蓋服務器端的錯誤。向開發人員自動報告javascript錯誤

我對社區的問題是:你在做什麼關於客戶端錯誤,尤其是在JavaScript?

那麼其他服務質量問題如處理速度慢和其他可能由客戶端計算機引起的問題呢?

回答

8

您可以處理客戶端與window.onerror事件

的處理函數中的JavaScript錯誤做一個Ajax請求到服務器端錯誤礦工並記錄錯誤。

http://www.javascriptkit.com/javatutors/error.shtml

Hovewer window.onerror是不是在所有的瀏覽器都支持,jQuery的可以填寫了自己的事件處理程序的差距:window.onerror和jQuery(window).error的組合應該足以

+2

只要確保onerror處理代碼是防彈的;-) – spender 2010-04-12 11:00:27

7

這裏沒有一個偉大的您可以在客戶端處理JavaScript錯誤。您可以捕獲window.onerror並用它來AJAX的報告回來,但:

(一)這是在WebKit的或Opera不支持。要捕獲所有錯誤,您必須將每個直接執行,事件和超時入口點都包含在try { ... }中,這非常混亂,並且與onerror處理程序相比,您的信息更少。

(b)您可能會與錯誤報告,你不能做任何事情,很少有調試可能由於缺乏信息所淹沒。你也許能夠逃脫它是隻有你知道客戶訪問的應用程序,但在一個公共訪問的網站,有很多錯誤的將是虛假的。由以下因素造成的東西:

  • 連接到託管腳本或AJAX失敗或被防火牆阻止的站點;

  • 意外的安全設置(瀏覽器可以選擇任意攔截多個接口);

  • 破瀏覽器加載項,的GreaseMonkey樣腳本過濾代理和虛假的「互聯網安全」的工具與您的代碼搞亂;

  • 行爲異常的不受支持的代理,如移動瀏覽器(特別是令人震驚的IEMobile),以及如果他們有權訪問自動瀏覽器的機器人;

  • 許多第三方內容引起的錯誤,如廣告,如果你有任何。

再次,在有限的使用的應用程序,你可以直接聯繫誰遇到問題的任何用戶,它可能是有用的,但對於一般公衆使用的網站它是一個非首發。

它最好使用「漸進增強」,以確保當失敗的JavaScript應用程序仍然有效。

+1

做服務質量檢查的重點是找出發生某些常見問題的頻率,然後重點關注這些問題。如果我們甚至沒有這個,那麼你只是盲目地射擊。 我也從服務器端獲得了大量的1,包括隨機死鎖,在請求中間關閉連接的人以及其他獨特的東西。 – Cine 2010-04-12 16:10:19