如何改能在非IE上可用:ajax异步判断网站是否可以访问到的解决方法

downloadok 2015-12-10 10:19:53
function getXMLHttpRequest(){
var client = getXMLHttpRequestFromIE();
if(client == null){
client = new XMLHttpRequest();
}
return client;
}

function getXMLHttpRequestFromIE(){
var namePrefixes = ["Msxml3","Msxml2","Msxml","Microsoft"];
for(var i = 0; i < namePrefixes.length; i++){
try{
var name = namePrefixes[i] + ".XMLHTTP";
return new ActiveXObject(name);
}catch(e){
}
}
return null;
}
var client = null;
//是否可以访问
var isRun = false;
//返回值
var stateString="";
//请求url的网站
function connUrl(url){
client = getXMLHttpRequest();
var actionURL = convertURL(url);
try{
client.open("GET", actionURL, true);
client.onreadystatechange = callBack;
client.send(null);
}catch(e){}
finally{
}
}
function callBack(){
if(client.readyState == 4){
stateString = client.responseText;
if(stateString && client.status==200)
isRun = true;
}
}
//是否可达
function isReach(url){
connUrl(url);
return isRun;
}
//给url地址增加时间戳,骗过浏览器,不读取缓存
function convertURL(url) {
//获取时间戳
var timstamp = (new Date()).valueOf();
//将时间戳信息拼接到url上
if (url.indexOf("?") >= 0) {
url = url + "&t=" + timstamp;
} else {
url = url + "?t=" + timstamp;
}
return url;
}
//因为是异步,先调用,此时isRun的值是false
isReach("http://www.baidu.com");
//3秒钟后判断isRun的值,如果为false认为网站不可达,类似超时时间
setTimeout(function(){
//alert(stateString);
//alert(isRun);
if(isRun==true){
document.getElementById("ceshi").innerText = "网站是通的!";
}else{
document.getElementById("ceshi").innerText = "网站不通!";
}
},3000);
...全文
175 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
跨域了没有搞,需要用服务器端xhr放到try..catch中判断 如果你有网站图片,可以用Image对象,不需要ajax对象 JavaScript如何检查网站是可以访问
downloadok 2015-12-10
  • 打赏
  • 举报
回复
网站都连不通,如何传到后台?求实现的代码
slwsss 2015-12-10
  • 打赏
  • 举报
回复
把地址传到后台用后台程序判断

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧