2015-09-10 52 views
3
var gravatar1; 
var gravatar2; 
var email1 = $(email1).val(); 
email1 = $.trim(email1); 
email1 = email1.toLowerCase(); 
email1 = md5(email1); 
gravatar1 = 'http://www.gravatar.com/avatar/' + email1; 
var email2 = $(email2).val(); 
email2 = $.trim(email2); 
email2 = email2.toLowerCase(); 
email2 = md5(email2); 
gravatar2 = 'http://www.gravatar.com/avatar/' + email2; 

是否有任何方法來確定gravatar1是否返回默認圖像,以便我可以覆蓋gravatar1以顯示gravatar2圖像。如果返回默認圖像,gravatar2只會覆蓋gravatar1。謝謝!確定gravatar是否使用javascript返回默認圖像

回答

6

如果你添加一個d = 404到URL,如果用戶沒有圖像集,gravatar將返回一個404狀態而不是默認圖像。

http://www.gravatar.com/avatar/098f6bcd4621d373cade4e832627b4f6?s=80&d=404(不可用的用戶圖像)

將返回404

雖然

http://www.gravatar.com/avatar/c9ef50b85bd345ea4e0d8da558816f3d?s=80&d=404(可用的用戶圖像)

將返回該圖像。

所以可以執行以下,其通過所有img.gravatar-IMG元件基本上迭代,得到SRC,設置d =上述404,然後發送一個請求(類型:HEAD),用於在src,

如果頁面返回404錯誤塊將運行使您能以一個可替換圖像的src,我個人形象上的默認圖像即

<img src="" data-defaultImg=""> 

或周圍的其他方法 - 您可以將src設置爲默認圖像,用成功塊代替錯誤塊,因此如果存在gravatar圖像替換默認圖像,則可以防止如果JS被禁用或者Ajax調用需要時間,則在頁面上顯示「未找到」圖像。

$("img.gravatar-img").each(function(i,el) { 
imgUrl = $(el).attr("src") + "&d=404"; 

// Image Does Not Exist 
    $.ajax({ 
    url:imgUrl, 
    type:"HEAD", 
    crossDomain:true, 
    error:function(){ 
     $(el).attr("src", $(el).attr("data-defaultimg")); 
    } 
    }); 
});