-1

我正在嘗試編寫一個獲取外部網址的JavaScript函數,並試圖在'tmOut'msecs中驗證它的存在。如果在此時間範圍內進行驗證,則應使用此網址作爲參數調用「回調」函數。跨域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存在。

  1. 有沒有辦法克服/解決問題(用戶不必修改任何默認瀏覽器設置)?或者,有沒有辦法實現相同的功能呢?

  2. 此功能是否爲「可重入」? (可有一次,我把它安全地多次爲不同的網址,在那裏?)

回答

0

有沒有辦法來克服/解決方法問題

客戶端?只有在您提出請求的網站使用CORS授予您許可時(這似乎不太可能)。

從服務器而不是直接從瀏覽器執行測試。

此功能是否爲「可重入」? (我可以同時爲不同的網址多次安全呼叫嗎?)

是的。你沒有創建任何全局變量。