本文介绍在JavaScript中判断URL链接是否有效的两种常见方法。第一种基于IE特有的ActiveXObject,通过XMLHTTP发送GET请求并检查状态码;第二种利用jQuery的ajax方法,无需额外插件即可实现跨浏览器的链接状态检测。文章提供了具体代码示例及优缺点分析,适用于多服务器部署环境下的链接容错处理。
引言与背景
引言
在一个部署于多台服务器的通讯录系统中,主页包含指向该系统的链接。当某台服务器发生故障导致服务不可用时,系统需要能够自动指向其他可用的服务器链接,以确保用户访问的连续性。
基于XMLHTTP的检测方案
解决方案一:使用XMLHTTP对象
下述代码节选自[2]中meizz的回复:
代码如下:
<script language= "javascript">
function getURL(url) {
var xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP");
xmlhttp.open("GET", url, false);
xmlhttp.send();
if(xmlhttp.readyState==4) {
if(xmlhttp.Status != 200) alert("不存在");
return xmlhttp.Status==200;
}
return false;
}
</script>
<a href= "https://www.jb51.net/aaa.asp " onclick= "return getURL(this.href) "> csdn </a> 该方案的缺点在于使用了ActiveXObject对象,因此仅适用于Internet Explorer浏览器,非IE内核的浏览器无法使用此方法。
基于jQuery的检测方案
解决方案二:基于jQuery扩展
以下内容参考自网络问答资源[1]:
插件主页地址:http://plugins.jquery.com/project/linkchecker
演示页面地址:http://sidashin.ru/linkchecker/
下载的压缩包中包含调用示例代码。
补充说明:
如果仅针对特定URL进行有效性检查,且项目中已引入jQuery,则无需使用额外插件,可直接通过jQuery实现。
代码如下:
$.ajax({
url: 'http://some.url.com',
type: 'GET',
complete: function(response) {
if(response.status == 200) {
alert('有效');
} else {
alert('无效');
}
}
}); 参考文档:
[1] http://zhidao.baidu.com/question/138740329.html?push=ql
[2] http://topic.csdn.net/t/20041214/16/3644539.html