我的网页使用iframe收集其他网页的内容。所有页面都在同一个域中。
在主页上,有没有办法确认所有iframe都已加载,并且没有404错误?
答案 0 :(得分:18)
404页面正在处理HTTP Status Code,该页面仅包含在发送到浏览器的服务器响应中,但不包含在实际的window
和document
对象中javascript可以访问的DOM。这意味着,虽然您当然可以收集状态代码并采取相应的操作,但您只能在javascript收到回复时执行此操作,例如使用jQuery.ajax() request或XmlHttRequest to load your "iframe"。
如果以上不是一个选项,唯一的另一种可能性是检查标题和/或H标签,以便" 404"。虽然这肯定不太理想(我很乐意看到,#34; 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
}
});
答案 1 :(得分:15)
假设这是你的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
现在,由于cross origin policy,浏览器不允许您通过javascript代码发出跨网站请求。方法是制作jsonp request。
$(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
}
}
});
});