J'ai un script qui détecte les erreurs Javascript sur mon site Web et les envoie à mon backend pour rapport. Il signale la première erreur rencontrée, le numéro de ligne supposé et l'heure.
EDIT pour inclure 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>
À cause de ce script, je suis parfaitement au courant des erreurs javascript qui se produisent sur mon site. L'un des plus grands délinquants est «Erreur de script». sur la ligne 0. dans Chrome 10+ et Firefox 3+. Cette erreur n'existe pas (ou peut être appelée quelque chose d'autre?) Dans Internet Explorer.
Correction (23/05/2013): Cette erreur "Erreur de script, ligne 0" apparaît maintenant dans IE7 et éventuellement dans d'autres versions d'IE. Peut-être le résultat d'un correctif de sécurité IE récent, car ce comportement n'existait pas auparavant.
Quelqu'un a-t-il une idée de ce que signifie cette erreur ou de sa cause? Cela se produit sur environ 0,25% de mes pageloads globaux et représente la moitié des erreurs signalées.
application/xhtml+xml
pour l'exécuter dans l'analyseur XHTML (comme le dit la spécification XHTML). Il y a beaucoup de contenu qui prétend être XHTML, mais envoie un doctype HTML normal. En raison de la façon incorrecte dont les créateurs de contenu utilisent XHTML, les navigateurs ont décidé de n'utiliser que l'analyseur XML application/xhtml+xml
(c'est un analyseur vraiment strict). Les hixie.ch/advocacy/xhtml et webdevout.net/articles/beware-of-xhtml expliquent pourquoi ne pas utiliser l'analyseur HTML avec XHTML.