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