Ari*_*san 13 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('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>
Run Code Online (Sandbox Code Playgroud)
The*_*uck 21
答案取决于您是否可以控制iframe代码,以及它是否是同一个域.
如果是同一个域,则可以执行以下操作从包装文档中设置错误处理功能:
document.getElementById("myiframe").contentWindow.onerror=function() {
alert('error!!');
return false;
}
Run Code Online (Sandbox Code Playgroud)
确保在设置错误处理程序之前等待iframe完成加载.
如果它不是同一个域,但您可以控制iframe内容(这两个域都在您的控制之下),您可以使用跨域通信框架(谷歌或自己构建)与外框通信,即捕获错误在iframe中,通过在iframe中设置onerror处理程序并将其通过框架发送到外部文档.
如果它不是同一个域而你没有iframe的控制权,那么由于安全限制,外部文档无法知道它内部发生了什么.
小智 2
唯一的方法是如果框架位于同一域上,在这种情况下您可以从父级执行以下操作:
iframe.contentWindow.onerror = function(){
// handle error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17569 次 |
| 最近记录: |