如何在加载iframe时处理错误?

Jam*_*sen 19 html javascript error-handling iframe

我有一个<iframe>其他网站可以包括所以他们的用户可以POST将表格返回到我的网站.我想优雅地处理我的网站关闭或我的服务器无法提供<iframe>内容的情况(即响应超时或4xx或5xx错误).我尝试添加一个onError<iframe>对象,但似乎并没有做任何事情:

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;
};
Run Code Online (Sandbox Code Playgroud)

如果我的服务器返回一个404我只是获取我的未找到页面的内容<iframe>.实际上,永远不会触发该错误处理程序.有没有办法让这项工作?

(我目前正在使用Chrome进行测试,但我希望它也适用于FF和IE> = 7.)

Mar*_*pel 12

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

var el = document.createElement('script');
el.onerror = errorFunction;
el.src = "somebogusscript.js?" + new Date().getTime();
document.body.appendChild(el);
Run Code Online (Sandbox Code Playgroud)

注意:不要忘记向src属性添加随机字符串以避免客户端使用缓存版本(可能会停止查看服务器).

  • 抱歉 - 很好,虽然我已经考虑到了这一点。查看更新:`iframe.onError = iframe.onerror = myHandler;` (2认同)