首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理加载iframe时出现的错误?

如何处理加载iframe时出现的错误?
EN

Stack Overflow用户
提问于 2010-09-14 07:11:27
回答 2查看 58.3K关注 0票数 22

我有一个<iframe>,其他网站可以包括,以便他们的用户可以POST表单回我的网站。我希望能够很好地处理站点宕机或服务器无法提供<iframe>内容的情况(即响应超时或4xx或5xx错误)。我尝试向<iframe>对象添加一个onError,但似乎没有任何作用:

代码语言:javascript
复制
showIFrame = function() {
  var iframe = document.createElement('iframe');
  iframe.id = 'myIFrame';
  iframe.src = 'http://myserver.com/someURLThatFailsToLoad';
  iframe.onError = iframe.onerror = myHandler;
  document.body.appendChild(iframe);
};

myHandler = function(error) {
  document.getElementById('myIFrame').style.display = 'none';
  console.error('Error loading iframe contents: ' + error);
  return true;
};

如果我的服务器返回一个404,我只会在我的<iframe>中获得未找到页面的内容。实际上,该错误处理程序从未被触发过。有没有办法做到这一点呢?

(我目前正在测试Chrome,但我希望它也能在FF和IE >= 7上运行。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-14 07:17:36

要检测您的服务器是否已关闭,您可以包含一个来自您自己域的空脚本文件。当服务器关闭时,onerror事件处理程序将触发:

代码语言:javascript
复制
var el = document.createElement('script');
el.onerror = errorFunction;
el.src = "somebogusscript.js?" + new Date().getTime();
document.body.appendChild(el);

注意:不要忘了向src属性中添加一个随机字符串,以避免客户端使用缓存版本(这可能会完全停止对服务器的查看)。

票数 13
EN

Stack Overflow用户

发布于 2012-03-29 16:51:05

一种技术是在发出请求时设置JavaScript超时。如果您的超时在iframe onload事件之前触发,则内容未加载。然后可以将iframe.src设置为about:空白、删除或重用iframe。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3705083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档