Chr*_*phe 28 javascript iframe http-status-code-404
我的网页使用iframe来收集其他网页的内容.所有页面都在同一个域中.
从主页面,有没有办法确认所有iframe已加载,并且没有404错误?
Ton*_*cas 18
404页面正在处理HTTP状态代码,该代码仅包含在发送到浏览器的服务器响应中,但不包含在javascript可能访问的DOM 的实际window和document对象中.这意味着虽然您当然可以收集状态代码并采取适当的操作,但您可能只在javascript收到响应时执行此操作,例如使用jQuery.ajax()请求或XmlHttRequest来加载"iframe".
如果以上不是一个选项,唯一的另一种可能性是检查"404"的标题和/或H标签.虽然这肯定不太理想(我很乐意看到,"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
}
});
Run Code Online (Sandbox Code Playgroud)
mir*_*sif 16
假设这是你的HTML
<html>
<head></head>
<body>
<iframe id="iframe"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有两种情况
您的iframe的src与您的网页所在的域位于同一个域中.
Ex : page url www.example.com and iframe's src www.example.com/iframe
Run Code Online (Sandbox Code Playgroud)
您可以使用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
})
});
Run Code Online (Sandbox Code Playgroud)您的iframe的src未指向您的网页所在的同一域.
Ex : Page url www.example.com and iframe's src www.otherdomain.com/iframe
Run Code Online (Sandbox Code Playgroud)
现在浏览器不允许您根据跨源策略从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
}
}
});
});
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
44407 次 |
| 最近记录: |