我正在嘗試在生產性網站上記錄javascript錯誤。到目前爲止,它相當奏效與包含在該網站下面的代碼:在javascript中使用堆棧跟蹤記錄錯誤
function catcherr(errorMessage, url, line) {
var parameters = "msg=" + escape(errorMessage)
+ "&url=" + escape(url)
+ "&line=" + escape(line);
new Image().src = "/error.gif?" + parameters;
return false;
};
window.onerror = catcherr;
我試圖堆棧跟蹤添加到錯誤,以獲取更多信息。這基本上適用於以下想法,包括到上面的功能:
try { i.dont.exist += 0; } // does not exist - that's the point
catch (e)
{
if (e.stack) // Firefox
{
// do some stuff
使用jQuery,一個簡單的例子:
<script type="text/javascript">
jQuery(document).ready(function() {
p.foo += 1; // this should throw an error
// do stuff
});
</script>
有趣的是,當我有裏面的「準備一個錯誤「jquery的功能,」try {i.dont.exist + = 0;}「部分不會拋出任何異常,並且引擎停止時沒有任何錯誤。 通過上面的例子,catcherr如下擴展,只有「1」被警告:有一個想法
function catcherr(errorMessage, url, line) {
try { alert(1); i.dont.exist += 0; alert(4);} catch(e) { alert(5);}
alert(2);
var parameters = "msg=" + escape(errorMessage)
// ...
}
任何人爲什麼會破裂,當jQuery的的「準備就緒」功能內出現錯誤?
我不這麼認爲,因爲如果我刪除函數catcherr()中的try {},則會引發錯誤。 – 2ni 2009-12-25 20:25:03