如何自動取得所有前端 JavaScript 錯誤以提升網站品質

我們每個案子都會用許多錯誤追蹤的機制確保網站品質,但還是不時會讓客戶發現有些功能無法操作,而這些問題大多出在 JavaScript 錯誤,由於一些老舊的瀏覽器或不同瀏覽器特性不同的關係,難免會有不小心寫錯的時候,為了能有效追蹤這些不易察覺的錯誤,我們會利用 JavaScript 追蹤 JavaScript 錯誤!

這個需求透過 jQuery 來做最方便了,透過 error(fn) 事件即可達成此一目標:

$(window).error(function(msg, url, line){
jQuery.post("/js_error_log.ashx", { msg: msg, url: url, line: line });
});

透過這個技巧即可有效獲得即時的前端資訊,看你要儲存到資料庫、EventLog、File、或郵寄出來都可以,不過唯一要小心的地方是當錯誤非常多時,這個錯誤追蹤的量可能會非常大,這時要特別注意程式的寫法,不要因為前端的錯誤槁掛了你的伺服器,而且有查到錯誤就要立即處理,降低錯誤發生的次數與提升網站品質。

相關連結

  

此文章由 will 發表於 2009/12/7 下午 12:08:01

永久連結 | 評論 (5) | 此文章的RSSRSS comment feed |

分類: Tips | JavaScript | Web

標籤: , ,

收藏:

相關文章

評論

十二月 7. 2009 15:12

枯藤昏鸦

为什么在IE和Chrome下无效?

枯藤昏鸦

十二月 7. 2009 17:54

Will 保哥

不会吧!应该有效喔,我觉得你可能是有其他程式影响到相关运作了。

Will 保哥 tw

十二月 7. 2009 18:12

枯藤昏鸦

http://www.littleshoot.org/errorTest2.html
你试试这张页面,他也遇到跟我一样的问题。本来应该弹出错误的,在IE/Chrome(Safari)下都弹不出来,只有FF有效。

枯藤昏鸦

十二月 8. 2009 00:25

Will 保哥

你的事件注册在 $(document).ready 方法里,但事件尚未执行就被事件外的 throw new Error("Throwing an error"); 引发例外事件,导致后续的 JS 程式被中断且无法执行,所以才无法使用。

建议将 $(window).error 放在 <head> 与 </head> 之间、载入 jQuery library 之后。

Will 保哥 tw

十二月 8. 2009 12:36

枯藤昏鸦

我照着您说的做了,但是还是不行。

枯藤昏鸦 cn

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

三月 15. 2010 16:30