Tengo una secuencia de comandos que detecta errores de Javascript en mi sitio web y los envía a mi backend para informar. Informa el primer error encontrado, el supuesto número de línea y la hora.
EDITAR para incluir 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>
Debido a este script, soy muy consciente de los errores de JavaScript que están ocurriendo en mi sitio. Uno de los mayores delincuentes es "Error de secuencia de comandos". en la línea 0. en Chrome 10+ y Firefox 3+. Este error no existe (¿o puede llamarse de otra manera?) En Internet Explorer.
Corrección (23/05/2013): este error "Error de script, línea 0" ahora se muestra en IE7 y posiblemente en otras versiones de IE. Posiblemente como resultado de un parche de seguridad de IE reciente ya que este comportamiento no existía anteriormente.
¿Alguien tiene alguna idea de lo que significa este error o qué lo causa? Ocurre en aproximadamente el 0.25% de mis cargas de página generales, y representa la mitad de los errores reportados.
application/xhtml+xml
para ejecutarlo en el analizador XHTML (como dice la especificación XHTML). Hay una gran cantidad de contenido que dice ser XHTML, pero envía un tipo de documento HTML normal. Debido a la forma incorrecta en que los creadores de contenido usan XHTML, los navegadores decidieron usar solo el analizador XML application/xhtml+xml
(es un analizador realmente estricto). El hixie.ch/advocacy/xhtml y webdevout.net/articles/beware-of-xhtml dice por qué no usar el analizador HTML con XHTML.