如何在iframe中检测错误404?(How to detect an error 404 in a

2019-09-02 15:12发布

我的网页使用的iframe收集来自其他页面的内容。 所有页面都在同一个域中。

从主网页,是有办法确认所有的I帧已加载,并没有404错误?

Answer 1:

该状态只能住在响应头。

404页正在处理HTTP状态代码 ,其中只包括在发送到浏览器服务器的响应,但不是实际的windowdocument的JavaScript可以访问DOM对象。 这意味着,虽然你肯定可以收集的状态码,并采取适当的行动,你可能只能这样做时,你的JavaScript是接收响应,如与jQuery.ajax()请求或XmlHttRequest加载你的“IFRAME” 。

希望404页以下404个标准。

如果上述是不是一种选择,唯一的其他可能性可以是检查标题,和/或H标记,为“404”。 虽然这是理想的大多数肯定少了(我很乐意看到,“404,电影没找到,电影”),这是你唯一的选择。

$('#iframe').load(function (e) {
    var iframe = $("#iframe")[0];

    if ( iframe.innerHTML() ) {
        // get and check the Title (and H tags if you want)
        var ifTitle = iframe.contentDocument.title;
        if ( ifTitle.indexOf("404")>=0 ) {
            // we have a winner! probably a 404 page!
        }
    } else {
        // didn't load
    }
});


Answer 2:

假设这是你的HTML

<html>
    <head></head>
    <body>
      <iframe id="iframe"></iframe>
    </body>
 </html>

有两种情况

  1. 你的iframe的SRC是从那里您的网页源自同一个域。

     Ex : page url www.example.com and iframe's src www.example.com/iframe 

    您可以使用jQuery的Ajax请求,以检查资源可用

      $(function() { $.ajax({ type : "HEAD", async : true, url : "www.example.com/iframe" }) .success(function() { $("#iframe").attr("src", "www.example.com/iframe"); }) .error(function(){ // Handle error perhaps a failover url }) }); 
  2. 你的iframe的SRC没有指向从那里您的网页是起源相同的域。

     Ex : Page url www.example.com and iframe's src www.otherdomain.com/iframe 

    现在,浏览器将不会让您从JavaScript代码跨站点请求由于交叉的起源策略 。 的方式解决方法是做一个JSONP请求 。

     $(function() { $.ajax({ url: "www.otherdomain.com/iframe", dataType: "jsonp", timeout: 5000, success: function () { $("#iframe").attr("src", "www.otherdomain.com/iframe"); }, error: function (parsedjson) { if(parsedjson.status == "200") { $("#iframe").attr("src", "www.otherdomain.com/iframe"); } else { // Handle error } } }); }); 


文章来源: How to detect an error 404 in an iframe?