Saber 酱的抱枕

Fly me to the moon

12/31
2015
学习

js判断url是否能够访问

我想用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("http://www.saber.love/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选项卡查看进度:

chrome network 控制台

这里面有两个错误,是我估计故意加进去测试的,证明代码能够正常工作。可是我网站地图里900多个网址,通篇检查下来竟然没有一个报错,这反而让我不放心了。

js判断url是否能够访问