我能在Iframe的父窗口中捕获Iframe的异常吗
can I catch exception of Iframe in parent window of Iframe
我在页面中有一个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>
答案取决于您是否控制iframe代码,以及它是否是同一个域。
如果是同一个域,那么您可以执行以下操作来设置包装文档中的错误处理功能:
document.getElementById("myiframe").contentWindow.onerror=function() {
alert('error!!');
return false;
}
在设置错误处理程序之前,请确保等待iframe完成加载。
如果它不是同一个域,但你可以控制iframe内容(两个域都在你的控制之下),你可以通过使用跨域通信框架(谷歌或自己构建)与外部框架通信,即通过在iframe中设置oneror处理程序来捕获iframe的错误,并通过框架将其发送到外部文档。
如果它不是同一个域,并且您不能控制iframe,那么由于安全限制,外部文档无法知道它内部发生了什么。
.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()
处理程序,请从下面的样品中检查它是否符合您的条件
如何处理加载iframe时的错误?
有许多其他选项或调整来处理这种错误:
if (frameDoc.title == 'title of page after expection occur')
还将使用iFrame的CCD_ 5事件进行工作。
only 方法是如果帧在同一个域上,在这种情况下,您可以从父级:
iframe.contentWindow.onerror = function(){
// handle error
}
相关文章:
- 防止Iframe窗体在新窗口中打开
- 将样式表插入iframe
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用jQuery从原始页面内容创建iframe
- Highslide(iframe的侦听器)
- iframe正在添加标签,需要删除它们
- 通过javascript/html访问twitter共享iframe
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 如何使用Angular动态添加iframe-src
- 由于iframe导致的问题
- 正在从页面中删除iframe
- 检测iframe是否跨域的愚蠢方法
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何操作iframe之外的元素
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- 如何捕获从iframe内部抛出的异常
- Iframe 数据从父页面发布,如果服务器上发生异常,则重新加载父页面
- IE9在iframe中加载脚本时抛出异常.为什么?
- 在https iframe中注册service worker时出现DOMException异常
- 我能在Iframe的父窗口中捕获Iframe的异常吗