我的网页使用的iframe收集来自其他页面的内容。 所有页面都在同一个域中。
从主网页,是有办法确认所有的I帧已加载,并没有404错误?
我的网页使用的iframe收集来自其他页面的内容。 所有页面都在同一个域中。
从主网页,是有办法确认所有的I帧已加载,并没有404错误?
404页正在处理HTTP状态代码 ,其中只包括在发送到浏览器服务器的响应,但不是实际的window
和document
的JavaScript可以访问DOM对象。 这意味着,虽然你肯定可以收集的状态码,并采取适当的行动,你可能只能这样做时,你的JavaScript是接收响应,如与jQuery.ajax()请求或XmlHttRequest加载你的“IFRAME” 。
如果上述是不是一种选择,唯一的其他可能性可以是检查标题,和/或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
}
});
假设这是你的HTML
<html>
<head></head>
<body>
<iframe id="iframe"></iframe>
</body>
</html>
有两种情况
你的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 }) });
你的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 } } }); });