gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:59:56 25 4
gpt4 key购买 nike

我在页面中有一个 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 中设置 onerror 处理程序来捕获 iframe 中的错误,并将其通过框架发送到外部文档。

如果它不是同一个域并且您无法控制 iframe,则由于安全限制,外部文档无法知道其中发生了什么。

关于javascript - 我可以在 Iframe 的父窗口中捕获 Iframe 的异常吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com