【问题标题】:javascript/jquery: detect if iframe page failed to loadjavascript/jquery:检测 iframe 页面是否加载失败
【发布时间】:2013-06-10 12:53:18
【问题描述】:

我有一个加载外部域的 iframe,有时域会出现故障或超时。我一直在试图弄清楚如何检测 iframe 页面是否无法加载。我不能使用 AJAX,因为域与主机页面不同(跨域保护)。

这是我认为它应该如何工作的示例代码(但它没有):

<!doctype html>
<html>
  <head>
  </head>
  <body>
    <iframe id="myIframe" src="http://www.domain.com/"></iframe>
    <script src="jquery.min.js"></script>
    <script>
        $('#myIframe').on('load',function() {
            alert('Loaded correctly');
        });
        $('#myIframe').on('error',function() {
            alert('Load failed!');
        });
    </script>
  </body>
</html>

我无法在远程域上添加代码或上传 jsonp 文件,因此无法使用 AJAX/JSONP 技巧(据我所知)。

【问题讨论】:

  • 哪一部分有效? load 加载时会触发吗?如果失败,error 会触发吗?
  • 如果您设置了正确的 CORS 标头,您可以使用 AJAX。您也可以使用postMessage。你甚至可以使用 JSONp。
  • 如果框架加载失败,则触发加载事件。
  • 错误是什么样的,超时?你能用setTimeout模拟吗?
  • @Frits 我无权访问其他域,因此无法在那里放置代码来帮助或创建 jsonp 内容。

标签: javascript jquery iframe


【解决方案1】:

试试这个:

$($('#myIframe')[0].document).ready(function() {
   alert('loaded');    
});

http://jsfiddle.net/DepKF/33/

【讨论】:

  • 一个不错的尝试,但是当页面超时或加载失败时仍然会触发警报。
  • 你有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
相关资源
最近更新 更多