12/31
2015
我想用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选项卡查看进度:
这里面有两个错误,是我估计故意加进去测试的,证明代码能够正常工作。可是我网站地图里900多个网址,通篇检查下来竟然没有一个报错,这反而让我不放心了。