使用 js 处理 iframe 时出错

Error handling iframe with js

我正在使用 $("#element").attr("src", "http://url.com/page"); 设置多个 iframe。

有没有办法确定在设置特定 iframe 时是否发生 HTTP 错误并进行相应处理?

不幸的是,<iframe>onerror 事件不再有效。

不过,您可以使用这样的解决方法:

  • load 事件绑定到您正在加载的所有 iframe

  • 为每个 <iframe> 任意时间抛出一个 setTimeout,平均时间为 60000(100 万)或更少

如果加载事件触发,清除setTimeout

这不是完整的错误处理,更多的是一种解决方法。我以前用 JSONP 请求来做,因为也没有错误处理。

var timeout;
$("#iframe").attr("src", "url-cross-domain.html").on("load", function() {
    clearTimeout(timeout);
    console.log("loaded !");
}):
timeout = setTimeout(function() {
    $("#iframe").off("load").remove();
    console.error("iframe loading failed");
}, 60000);

它有几个限制,例如您将无法获得请求响应代码。但值得一试。