Előzőleg a szerver oldali hibákat jelenítettük meg kliens oldalon, most a kliens oldali hibákat naplózzuk szerver oldalon!
Először is, a lekezeletlen hibákat a window.onerror felülírásával kaphatóak el:
alert(errorMsg + ' - ' + file + ' (' + line + ')');
return true;
};
var a = 1;
a();
Érdekesség, míg a kattintás esemény során a hamis visszatérési érték, addig a hiba eseménynél az igaz visszatérési érték szükséges ahhoz, hogy az adott esemény ne fusson tovább.
A feladatunk mindössze annyi, hogy megjelenítjük a hibaüzenetet, majd azt elküldjük a szervernek.
Magát az Ajax hívást ExtJS-sel végzem, véleményem szerint nem fordulhat elő, hogy már akkor lekezeltlen hibába ütköznék, amikor az Ext még nem állt fel.
Ám az előfordulhat, hogy a body még nem létezik. Erre érdemes figyelni.
Jópofa az ExtJS ablak, benne a hibaüzenet szövegével, de ha van Firebug (vagy bármi hasonló), akkor engedjük tovább a hibát.
if (document.body) {
Ext.Msg.alert('JavaScript error', errorMsg + ' - ' + file + ' (' + line + ')');
} else {
alert(errorMsg + ' - ' + file + ' (' + line + ')');
}
Ext.Ajax.request({
url: 'js_error_log.php',
params: {
url: document.location.href,
errorMsg: errorMsg,
file: file,
line: line
}
});
return typeof console === 'undefined';
};
Én még egy kiegészítést használok, első lépésként egy fals hibajelzést lekezelek:
return;
}
Sajnos arra már nem emlékszem, hogy ez nálam valóban előfordult, vagy csak valahol olvastam róla és azóta hordozom?