Ho uno script che rileva errori Javascript sul mio sito Web e li invia al mio back-end per la segnalazione. Riporta il primo errore riscontrato, il numero di riga presunto e l'ora.
MODIFICA per includere doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
...
<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
window.onerror = function(msg, url, ln) {
//transform errors
if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
msg = 'Error loading script';
}else{
msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
}
}
msg = msg.toString();
//ignore errors
if(msg.indexOf("Location.toString") > -1){
return;
}
if(msg.indexOf("Error loading script") > -1){
return;
}
//report errors
window.onerror = function(){};
(new Image()).src = "/jserror.php?msg=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url || document.location.toString().replace(/#.*$/, "")) + "&ln=" + parseInt(ln || 0) + "&r=" + (+new Date());
};
})(window);
//]]>
</script>
A causa di questo script, sono pienamente consapevole di eventuali errori javascript che si verificano sul mio sito. Uno dei più grandi delinquenti è "Errore di script". sulla linea 0. in Chrome 10+ e Firefox 3+. Questo errore non esiste (o può essere chiamato qualcos'altro?) In Internet Explorer.
Correzione (23/05/2013): questo errore "Errore script, riga 0" viene ora visualizzato in IE7 e probabilmente in altre versioni di IE. Probabilmente il risultato di una recente patch di sicurezza IE poiché questo comportamento in precedenza non esisteva.
Qualcuno ha idea di cosa significhi questo errore o cosa lo causi? Succede su circa lo 0,25% dei miei pageload complessivi e rappresenta la metà degli errori segnalati.
application/xhtml+xml
per eseguirlo nel parser XHTML (come dice la specifica XHTML). C'è un sacco di contenuto che afferma di essere XHTML, ma invia un normale doctype HTML. A causa del modo in cui i creatori di contenuti utilizzano XHTML in modo errato, i browser hanno deciso di utilizzare solo il parser XML application/xhtml+xml
(è un parser davvero rigoroso). Il hixie.ch/advocacy/xhtml e webdevout.net/articles/beware-of-xhtml spiega perché non utilizzare il parser HTML con XHTML.