Eu tenho um script que detecta erros de Javascript no meu site e os envia ao meu back-end para geração de relatórios. Ele relata o primeiro erro encontrado, o número da linha suposta e a hora.
EDIT 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>
Devido a esse script, estou ciente de quaisquer erros de javascript que estão acontecendo no meu site. Um dos maiores infratores é o "Erro de script". na linha 0. no Chrome 10+ e Firefox 3+. Este erro não existe (ou pode ser chamado de outra coisa?) No Internet Explorer.
Correção (23/05/2013): Este erro "Erro de script, linha 0" está aparecendo no IE7 e possivelmente em outras versões do IE. Possivelmente resultado de um patch de segurança recente do IE, pois esse comportamento não existia anteriormente.
Alguém tem alguma idéia do que esse erro significa ou o que causa? Isso acontece em cerca de 0,25% do meu total de carregamentos de páginas e representa metade dos erros relatados.
application/xhtml+xml
para executá-lo no analisador XHTML (como a especificação XHTML diz). Existe um monte de conteúdo que afirma ser XHTML, mas envia um tipo de documento HTML normal. Devido à forma como os criadores de conteúdo incorretamente usam XHTML, os navegadores decidiram usar apenas o analisador XML application/xhtml+xml
(é realmente um analisador estrito). O hixie.ch/advocacy/xhtml e webdevout.net/articles/beware-of-xhtml diz por que não usar o analisador de HTML com XHTML.