2009-08-30 13 views
5

Sé que se puede agregar un detector de eventos para window.error.Cómo detectar errores de JavaScript en todos los Iframes (con window.error)?

Sin embargo, cuando se trabaja con marcos flotantes, cada iframe tiene su propio elemento de ventana y debe crearse window.error para cada iframe.

¿Es posible de alguna manera definir el controlador de eventos de error en una ubicación, donde todos los errores activarán este método específico?

Respuesta

5

Esto podría funcionar.

function myHandler(msg, url, line){ 
    //do stuff here... 
} 

//hook in all frames... 
function addErrorHandler(win, handler){ 
    win.onerror = handler; 
    for(var i=0;i<win.frames.length;i++){ 
    addErrorHandler(win.frames[i], handler); 
    } 
} 
//start with this window... and add handler recursively 
addErrorHandler(window, myHandler); 
+0

Gracias por eso. se ve bien, aunque parece no ser perfecto para mi aplicación - IFrames y Windows se crean sobre la marcha sin que yo pueda controlar gran parte de ellos, por lo que no puedo saber de antemano todos los objetos ganadores. Supongo que no hay una forma global de manejo de errores en la ventana de IE? Gracias, Tal. – Tal

+0

ah, en ese caso ... en cada cuadro que cree, solo agregue ... window.onerror = top.myHandler; – scunliffe

+0

sí ... pero no sé de antemano cuál sería la fuente del Iframe. (utilizando el formulario submit to the target IFrame) - window.onerror debe estar dentro del código IFrame. – Tal

2

No he intentado esto así que no me cuelguen por ello :-) En la ventana principal/principal que contiene todos los iframes, puede crear allí la función de entrega de errores. Luego use jQuery para tomar todos sus iFrames en su página y registrar el controlador .error para apuntar a su función registrada en la ventana principal.

PS: También mientras estaban en el tema de manejo de errores Javascript, esto también es bastante moderno: https://damnit.jupiterit.com/

Cuestiones relacionadas