我想用js检查网站地图文件里的网址是否都正确,于是找了js判断url是否能够访问的方法。原理是利用jQuery的ajax方法,根据网页状态码来判断网页能否打开。
//判断一个url是否可以访问
function IsLoad(_url){
$.ajax({
url:_url,
type:"get",
success:function(){
//说明请求的url存在,并且可以访问
console.log('请求的url可以访问');
},
statusCode:{
404:function(){
//说明请求的url不存在
console.log('请求的url不可访问');
}
}
});
}
//调用
IsLoad("/music/");
检查sitemap中网址能否打开的代码:
function IsLoad(_url){
var a=$.ajax({
url:_url,
type:"get",
statusCode:{
200:function(){
a.abort();
},
404:function(){
console.log("404:"+_url);
errorUrls[errorUrlsIndex]=_url;
errorUrlsIndex++;
}
}
});
}
var sitemapXml = new XMLHttpRequest();
sitemapXml.open("GET", "/sitemap.xml", false);
sitemapXml.send(null);
var errorUrls=[];
var errorUrlsIndex=0;
var sitemapUrlsLength=sitemapXml.responseXML.getElementsByTagName("url").length;
for (var i = 0; i < sitemapUrlsLength; i++) {
IsLoad(sitemapXml.responseXML.getElementsByTagName("loc")[i].childNodes[0].nodeValue);
};
abort()这个中止命令总感觉没效果……不知是不是哪里不对
需要jQuery,在本域名下的控制台中执行之后,可以到network选项卡查看进度:
这里面有两个错误,是我估计故意加进去测试的,证明代码能够正常工作。可是我网站地图里900多个网址,通篇检查下来竟然没有一个报错,这反而让我不放心了。