遇见奇葩的问题前端处理内嵌的网页地址是不是404
建议用第一种
1、link和script可以区分跨域和404的错误
var isRunUrl=function(url){
return new Promise(function (resolve, reject) {
// 测试链接连通性, 主要检测404错误
// 由于AJAX通常无法区分404和跨域问题
// 所以只能用script 或者 link标签
// link比script更容易捕获错误
var dom= document.createElement('link');
dom.href = url;
dom.rel = 'stylesheet';
document.head.appendChild(dom);
dom.onload = function () {
document.head.removeChild(dom);
resolve();
}
dom.onerror = reject;
});
}
isRunUrl("测试地址").then(function(data){
//处理resolve的代码
console.log("Promise被置为resolve", data);;
},function(data){
//处理reject的代码
console .log("程序被置为了reject",data);
})
2、不用跨域,只区分404
// 判断一个url是否可以访问
function IsLoad(url,fun){
$.ajax({
url: url,
type: 'GET',
success: function(response) {
if($.isFunction(fun)){
fun(true);
}
},
error:function () {
if($.isFunction(fun)){
fun(false);
}
}
});
}
IsLoad('同一域下的url地址',function(res){
if(res){
alert('请求的url可以访问');
}
});