2010-04-09 7 views
23

Quiero mostrar errores de guiones en una alerta emergente en lugar de mostrarlos en la consola del navegador.javascript: cómo mostrar los errores de script en una alerta emergente?

window.onerror = function() { 
    var message = /* get error messages and put them here */; 
    alert(message); 
    return true; 
}; 
+3

Tenga en cuenta que el evento 'onerror' sólo es compatible con IE y Mozilla. – CMS

+1

¿Existe una solución de navegador cruzado? Quiero decir, una función similar compatible con webkit – powerboy

+1

¿Quiere decir que hay otros navegadores además de IE y Mozilla? ¡Dang! Necesito salir más :) – DVK

Respuesta

39

Sí, esa es la forma correcta.

Véase la referencia aquí:

http://www.javascriptkit.com/javatutors/error2.shtml

y explicación de cómo ver más detalles del error aquí:

http://www.javascriptkit.com/javatutors/error3.shtml

Su ejemplo:

window.onerror = function(msg, url, linenumber) { 
    alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber); 
    return true; 
} 

Si deseas t o mostrar una LISTA de errores en una sola ventana emergente, es más complicado.

Dado que los errores occue 1 por 1, que tiene que hacer lo siguiente:

  • tienen window.onerror almacén detalles del controlador de errores de alguna variedad
  • Comprobar esa matriz periódicamente - ya sea a través de un temporizador, o en cada N'th llamada del controlador window.onerror, o ambos.

    Cuando pasa el cheque, todo el proceso de matriz, mostrar el contenido según se desee, y vaciar una serie

+0

¡Gracias! Entonces la respuesta es: window.onerror = function (message) { alerta (mensaje); return true; }; ¡Apenas probado! – powerboy

2

Sólo en caso de que alguien quisiera usarlo con jQuery:

$(window).on("error", function(evt) { 

    console.log("jQuery error event:", evt); 
    var e = evt.originalEvent; // get the javascript event 
    console.log("original event:", e); 
    if (e.message) { 
     alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename); 
    } else { 
     alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target)); 
    } 
}); 
+0

Pruebe también el diálogo de jquery ui> https://jqueryui.com/dialog/ – KingRider

-1
<script>$(window).on("error", function(evt) { 

console.log("jQuery error event:", evt); 
var e = evt.originalEvent; // get the javascript event 
console.log("original event:", e); 
if (e.message) { 
    alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename); 
} else { 
    alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target)); 
} 
}); 
</script> 
Cuestiones relacionadas