如何捕获所有iFrame中的JavaScript错误(使用window.error)?

如何捕获所有iFrame中的JavaScript错误(使用window.error)?,javascript,iframe,error-handling,Javascript,Iframe,Error Handling,我知道可以为window.error添加事件侦听器 但是,在使用iframe时,每个iframe都有自己的窗口元素,并且应该为每个iframe创建window.error 是否可以在一个位置定义错误事件处理程序,所有错误都将在该位置发生 触发此特定方法?我没有尝试过此方法,所以请不要为此绞死我:-) 在包含所有iFrame的主/父窗口中,您可以在那里创建错误处理函数。然后使用jQuery获取页面中的所有iframe,并注册.error处理程序以指向在父窗口中注册的函数 另外,当我们谈到javas

我知道可以为window.error添加事件侦听器

但是,在使用iframe时,每个
iframe
都有自己的窗口元素,并且应该为每个
iframe
创建
window.error

是否可以在一个位置定义错误事件处理程序,所有错误都将在该位置发生
触发此特定方法?

我没有尝试过此方法,所以请不要为此绞死我:-) 在包含所有iFrame的主/父窗口中,您可以在那里创建错误处理函数。然后使用jQuery获取页面中的所有iframe,并注册.error处理程序以指向在父窗口中注册的函数

另外,当我们谈到javascript错误处理时,这也很酷:

这可能会奏效

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);
函数myHandler(消息、url、行){
//在这里做事。。。
}
//钩住所有的框架。。。
函数addErrorHandler(win,handler){
win.onerror=处理程序;

对于(var i=0;我同意。看起来不错,但似乎不适合我的应用程序-iFrame和windows是在没有我控制的情况下动态创建的,因此我无法提前知道所有win对象。我猜IE窗口中没有全局错误处理方法?谢谢,Tal。啊,在这种情况下……在你创建的每个帧中,都有广告d、 …window.onerror=top.myHandler;是的…但我事先不知道Iframe的源是什么。(使用表单提交到目标Iframe)-window.onerror应该在IFrame代码本身中..嗯,你有一个包含在所有帧中的全局JS文件吗?如果有,你的onerror处理程序可以放在那里吗?并在加载脚本文件时连接到每个窗口?根据你想要/需要错误处理程序中的什么信息,你可以检查父[n]和子[n]框架以确定错误处理程序中的层次结构。出于兴趣…您如何处理该处理程序?例如,您是否执行AJAX回调以记录错误/电子邮件系统支持?还是仅以“漂亮”的方式提醒用户方法?有几个iFrame具有全局JS,这是一个好主意。一些iFrame没有任何共同点,是动态创建的-有什么想法吗?关于错误处理程序,我正在考虑做一些AJAX回调以获得支持。但目前它只保存在客户端的一些字符串中,以供以后查看。