使用 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);
它有几个限制,例如您将无法获得请求响应代码。但值得一试。
我正在使用 $("#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);
它有几个限制,例如您将无法获得请求响应代码。但值得一试。