Javascript 我可以在Iframe的父窗口中捕获Iframe的异常吗

Javascript 我可以在Iframe的父窗口中捕获Iframe的异常吗,javascript,iframe,exception-handling,Javascript,Iframe,Exception Handling,我在页面中有一个IFrame,IFrame有一些JavaScript。在运行时,IFrame中的JavaScript给出了我希望在父窗口中捕获的异常。怎么做 <html> <head> <script type="text/javascript"> var frm123 = document.getElementById("frm123"); frm123.contentWindow.onerror = function() { alert(

我在页面中有一个IFrame,IFrame有一些JavaScript。在运行时,IFrame中的JavaScript给出了我希望在父窗口中捕获的异常。怎么做

<html> 
<head> 
<script type="text/javascript"> 
var frm123 = document.getElementById("frm123"); 
frm123.contentWindow.onerror = function() { 
    alert('error caught'); 
} 
function loadData() { 
    var oRTE = document.getElementById("frm123").contentWindow.document;
    oRTE.open(); 
    oRTE.write(txt123.value);
    oRTE.close();
} 
</script> 
</head> 
<body> 
<input type="button" onclick="loadData();" value="load"> 
<input type="text" id="txt123"> 
<iframe id = "frm123" > 
</body> 
</html>

var frm123=document.getElementById(“frm123”);
frm123.contentWindow.OneError=函数(){
警报(“捕获错误”);
} 
函数loadData(){
var-oRTE=document.getElementById(“frm123”).contentWindow.document;
oRTE.open();
oRTE.write(txt123.value);
oRTE.close();
} 
唯一的方法是如果帧位于同一个域上,在这种情况下,您可以从父级执行以下操作:

iframe.contentWindow.onerror = function(){
    // handle error
}

.onError()
函数不起作用的可能原因可能很少。这可能是因为跨域URL的缘故。为此,您应该在实际加载
iFrame
之前进行检查,并使用该功能

var url = "google.com"
var loading_url = "/empty.html"
document.getElementById("iframe").src = loading_url;
$.ajax({
url: url,
type: 'GET',
complete: function(e, xhr, settings){
     if(e.status === 200){
          document.getElementById("iframe").src = url;
     }
  }
});
这不会跨域工作,在这些情况下,状态代码为0

还要检查的是
.onError()
处理程序请从下面的示例中检查它是否符合您的条件

有许多其他选项或调整可以处理此类错误:

if(frameDoc.title==“预期发生后的页面标题”)


还将使用iFrame的
.onLoad()
事件执行此工作。

答案取决于您是否控制iFrame代码,以及它是否为同一域

如果是同一个域,则可以执行以下操作来设置包装文档中的错误处理功能:

document.getElementById("myiframe").contentWindow.onerror=function() {
    alert('error!!');
    return false;
}
确保在设置错误处理程序之前等待iframe完成加载

如果它不是同一个域,但您可以控制iframe内容(两个域都在您的控制之下),您可以使用跨域通信框架(google it或自己构建)与外部框架进行通信,即,通过在iframe中设置onerror处理程序来捕获iframe中的错误,并通过框架将其发送到外部文档


如果它不是同一个域,并且您无法控制iframe,则由于安全限制,外部文档无法知道它内部的情况。

var frm123=document.getElementById(“frm123”);frm123.contentWindow.OneError=函数(){alert('error Capture');}函数loadData(){var oRTE=document.getElementById(“frm123”).contentWindow.document;oRTE.open();oRTE.write(txt123.value);oRTE.close();}@ArifHasan在您的问题中写下上述代码,以便其他人可以帮助您发布代码和异常消息,如果在页面加载过程中发生异常,我可以做什么?那么您将遇到问题,因为您无法从外部控制。