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

时间:2009-08-30 11:17:44

标签: javascript iframe error-handling

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

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

是否有可能以某种方式在一个位置定义错误事件处理程序,其中所有错误都将在其中 触发这种特定方法?

2 个答案:

答案 0 :(得分:6)

这可能有用。

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);

答案 1 :(得分:2)

我没试过这个,所以请不要因为它而挂我:-) 在包含所有iframe的主/父窗口中,您可以在那里创建错误处理功能。然后使用jQuery抓取页面中的所有iFrame并注册.error处理程序以指向在父窗口中注册的函数。

PS:同时关于javascript错误处理的主题,这也很酷:https://damnit.jupiterit.com/