Javascript 加载iframe时如何侦听未捕获的错误?

Javascript 加载iframe时如何侦听未捕获的错误?,javascript,html,Javascript,Html,我为当前工作开发了嵌入到iframes中的web内容。为了测试这些内容,我创建了一个小型web应用程序,模拟它们将部署到的环境,并报告有关它们的问题和错误。我报告错误的一种方法是,使用addEventListener收听iframe的contentWindow事件的“error”,并将错误消息打印到应用程序中的某种错误日志中 const iframe = document.querySelector("iframe"); iframe.addEventListener("load", () =&

我为当前工作开发了嵌入到
iframe
s中的web内容。为了测试这些内容,我创建了一个小型web应用程序,模拟它们将部署到的环境,并报告有关它们的问题和错误。我报告错误的一种方法是,使用
addEventListener
收听
iframe
contentWindow
事件的
“error”
,并将错误消息打印到应用程序中的某种错误日志中

const iframe = document.querySelector("iframe");
iframe.addEventListener("load", () => {
    iframe.contentWindow.addEventListener("error", ev => {
        console.log(`${iframe.src.slice(iframe.src.lastIndexOf("/") + 1)} ${ev.lineno}:${ev.colno} - ${ev.message}`);
    }, true);
});
这在大多数情况下都有效,但是如果在加载
iframe
的内容时发生错误(例如在主体的onload回调上调用的函数),则不会触发事件。这是因为我订阅了
iframe
“load”
事件,并在该点设置了错误回调,这意味着可能在加载完成之前触发错误事件。我已经尝试过收听
iframe
“error”
事件来绕过这个问题,但这似乎也不起作用,我不确定还能尝试什么。如果这些错误发生在内容加载完成之前,我如何报告这些错误

下面是我的代码侦听错误的样子
console.log
通常会替换为应用程序中的自定义日志功能

const iframe = document.querySelector("iframe");
iframe.addEventListener("load", () => {
    iframe.contentWindow.addEventListener("error", ev => {
        console.log(`${iframe.src.slice(iframe.src.lastIndexOf("/") + 1)} ${ev.lineno}:${ev.colno} - ${ev.message}`);
    }, true);
});