Я пытаюсь написать функцию JavaScript, которая получает внешний url, и пытается проверить его существование в течение 'tmOut' msecs. Если он проверен в течение этого периода времени, он должен вызвать функцию обратного вызова с этим URL-адресом в качестве аргумента.Междоменный XMLHttpRequest для проверки существования веб-сайта?
Вот функция:
function chkUrl(url, tmOut, callback) {
var abortChk = false;
var abortTmr = setTimeout(function(){abortChk = true;}, tmOut);
var x = new XMLHttpRequest();
x.onreadystatechange = function() {
if (x.readyState == 4) {
if (x.status < 400 && !abortChk) {
clearTimeout(abortTmr);
callback(url);
}
}
};
x.open('GET', url, true);
x.send(null);
}
Проблема из-за вызовов между доменами (возможно) я получаю x.status = 0 независимо от существования URL.
Есть ли способ преодолеть/решить проблему (без необходимости изменять настройки браузера по умолчанию)? Альтернативно, есть ли способ достичь той же функциональности в противном случае?
Является ли эта функция «реентерабельной»? (Я могу назвать это безопасно несколько раз для различных URL-адресов на один раз?)