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);
});