-
-
Save jpsilvashy/5725579 to your computer and use it in GitHub Desktop.
function hostReachable() { | |
// Handle IE and more capable browsers | |
var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" ); | |
var status; | |
// Open new request as a HEAD to the root hostname with a random param to bust the cache | |
xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false ); | |
// Issue request and handle response | |
try { | |
xhr.send(); | |
return ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 ); | |
} catch (error) { | |
return false; | |
} | |
} |
@Vinaykrsharma, It's working great for me, are you trying this on your local server or on a remote server?
Hi,
I get this error:
Bad constructor. (W056) var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
how to check ? it's return always false
It's working for me ^_^ convert this to a runnable script, then run this from the console in chrome developer tools.
// Handle IE and more capable browsers
var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
var status;
// Open new request as a HEAD to the root hostname with a random param to bust the cache
xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
// Issue request and handle response
try {
xhr.send();
console.log ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 );
} catch (error) {
console.log(error);
}
Working for localhost and remote (github)
thanks for this script :) I just added an option to check the port, if needed - https://gist.github.com/cmpscabral/7626ae29475283d32771
but now local always return true.
Hi,
Thank you for this simple gist.
If you have a port problem, or if you code on a "localhost:8888", try to use window.location.host
instead of window.location.hostname
@Hettomei that will not work, see my answer in https://gist.github.com/cmpscabral/7626ae29475283d32771
Hi i am trying this on my local server and using xhr.open( "HEAD","http://www.google.com" , false ); and it is always returning false. KIndly help
@sumit read about CORS
// Open new request as a HEAD to the root hostname with a random param to bust the cache << Why do you have to bust the cache? And how is it going to bust the cache? Thanks!
And if you want to wait until online you can use this:
public waitUntilOnline(): any {
return new window.Promise((resolve, reject) => {
let interval: any = window.setInterval(() => {
if (this.isOnline()) {
window.clearInterval(interval);
interval = undefined;
resolve(true);
} else {
console.log('Browser is still offine...');
}
}, 2500);
});
}
this.waitUntilOnline().then((isOnline: boolean) => {
//always returns true here. Do anything when the browser switches from offline to online
});
This doesn't work!
Always returns false