Webapp fejlesztéskor felmerül az az igény, hogy valahogy tudni kellene a JavaScript kódban felmerülő hibákról. Persze van az a változat, hogy „Légy szíves nyomj egy Control+Shift+I -t, válaszd a Konzol-t és mondd el, hogy mit látsz”, de ez annyira nem praktikus. A reggeli kávé melletti Facebook postok görgetése közben egy hasznos webes blogra bukkantam, a https://blog.fps.hu -ra. Bejegyzéseikből látszik, hogy a témát náluk is az Élet adja. Ott találtam a témaindító bejegyzést: JavaScript hibák naplózása szerver oldalon . Amit én egy kicsit átszabtam:
Készítettem egy error_report.js -t, amit az összes JS <script src=”” > tag elé tettem, majd az alábbi tartalmat illesztettem bele:
// JS error logging on server side, based on: // https://blog.fps.hu/javascript-hibak-naplozasa-szerver-oldalon-remote/ window.onerror = function (errorMsg, url, lineNumber, column, errorObj) { if (errorMsg.indexOf('Script error.') > -1) { return; } var error_info = { error_msg : errorMsg, url : url, line: lineNumber, column : column, error_object : errorObj, platform : data.platform, // nálam app specifikus guid : data.guid // ez nálam a webapp GUID-ja }; // szándékosan nem jQuery, mert a lehető legtöbb hibát akartam elkapni xhr = new XMLHttpRequest(); xhr.open('POST', data.api_url + 'errors.php'); // itt a data.api_url ugyancsak a webappos változó // cseréld a saját PHP-d elérési útjára xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(encodeURI('errordata=' + JSON.stringify(error_info))); };
A PHP scriptben pedig a $_POST[‘errordata’] változóban lesz minden, JSON stringként – tehát json_decode() kell rá – amire szükségünk van.