我这个方法要用到xmlhttp组件,速度不快,客户端支持可能不是很好:
<script language="JavaScript">
<!--
function testurl(url)
{
if(!url) return false;
var xml = new ActiveXObject("Microsoft.XMLHTTP");
xml.open("GET",url,false);
xml.send();
if(xml.status == 200) return true;
else return false;
}alert(testurl("http://www.cjol.com"));
alert(testurl("http://www.csdn.net"));
//-->
</script>
<script language="JavaScript">
<!--
function testurl(url)
{
if(!url) return false;
var xml = new ActiveXObject("Microsoft.XMLHTTP");
xml.open("GET",url,false);
xml.send();
if(xml.status == 200) return true;
else return false;
}alert(testurl("http://www.cjol.com"));
alert(testurl("http://www.csdn.net"));
//-->
</script>
但是发现IE6加强了安全检查,
不允许这么干方法1.
使用download行为,
获取这个URL的代码,
如果获得了就说明是正确的,
没有获得就说明是错误的示例代码如下:
<span ID="oDownload" STYLE="behavior:url(#default#download)" ></span>
<script language="JavaScript">
var urlValid = false
function onDownload(data){
urlValid = true
}
function testURL(url){
oDownload.startDownload(url,onDownload)
setTimeout("alert(urlValid)",1000)
}window.onload = function(){
testURL("noname3.html")
}
</script>
如果存在的话会alert(true)但是download行为只允许下载同样domain的文件,
也就是说,只能检查同一站点下的文件存在与否失败
方法2.
使用iframe,
转到这个页面,
再检查iframe的location
如果有的话就是正确 的,
不然就是错误的.
这个方法不能检查http://www.a.com/cc.exe之类的会下载的文件代码
<script language="JavaScript">
var urlValid = false
window.onload = function(){
window_onLoad("http://www.vizo.org/")
}function window_onLoad(url){
document.all.ifrm.src = url
setTimeout("checkUrlValid(\""+url+"\")",1000)
}function checkUrlValid(url){
alert(document.frames("ifrm").location.href != "about:blank" )
}
</script>
<iframe id=ifrm ></iframe>
同样的原因,
不能检查另一个domain的文件
我做了测试,
检查同一个domain下相同协议的文件是可行的,
不过这是个异步的方法,
呵呵