2012-06-11 59 views
4

我遇到過很多我們的支持電話是關於我們的圖片未加載的問題,因爲用戶阻止了亞馬遜S3或類似的第三方服務。我使用第三方服務託管圖片,視頻和一些JavaScript。有沒有辦法通過JavaScript檢測,如果客戶端阻止域名,以便我們顯示一條消息,而不是有用戶聯繫人支持?檢查用戶是否阻止了第三方域名

$.ajax 'http://aws.amazon.com/s3/', 
    type: 'GET', 
    dataType: 'html' 
    complete: (e, xhr, settings) -> 
    if e.status == 200 
     console.log "Not Blocking S3" 
    else 
     console.log "Blocking S3" 

根據評論我做了一個嘗試,但它仍然無法正常工作。當我沒有塊時它會返回阻塞。

上面的示例咖啡代碼不起作用,因爲我認爲發生安全錯誤是因爲它在不同的域上執行ajax。 Firebug以紅色顯示請求,但顯示200. e.status返回0.

+2

嘗試和使用JavaScript,並且,如果它不能被檢索到,給予該消息來自第三方加載資源,? –

+0

我認爲@DavidThomas意味着您應該使用javascript來執行檢測並將結果報告回您的網絡服務器。 – bluevector

+0

@jonnyGold:我確實;澄清了原來的評論。 =) –

回答

7

從要檢查的域中加載圖像。

<img id="checkImg" src="https://www.google.com/images/srpr/logo3w.pngAAA" /> 

只是一個普通的圖像標記(注意AAA末,使其工作)。然後你可以檢查圖像的寬度,看它是否加載。

if(document.getElementById('checkImg').clientWidth != 275) 
    alert("Error") 

的谷歌徽標是275px寬,但誤差圖像(在Chrome中至少)只有18像素。所以如果圖像不是275px寬,我知道它沒有加載。

Demo

+0

+1 - 通過這種方式,您不會獲得跨域訪問問題,您可能會在Javascript中嘗試加載外部資源 –

+0

這是一個好主意。 +1 –