如果圖像是404,但是主機會返回圖像,會發生圖像錯誤回調嗎?Broken Youtube縮略圖不會觸發錯誤回調
我想在客戶端提交URL到服務器之前確定Youtube縮略圖是否有效。通常情況下,你可以生成一個縮略圖URL不與格式查詢自己的API http://img.youtube.com/vi/**ID**/maxresdefault.jpg
有些視頻沒有高分辨率的縮略圖,例如,這一個: http://img.youtube.com/vi/ty62YzGryU4/maxresdefault.jpg
然而,低質量縮略圖總是存在: http://img.youtube.com/vi/ty62YzGryU4/default.jpg
理想我想能夠檢測到通過此代碼段,這會叫「做」,當它加載一個有效的縮略圖縮略圖是否做負載:
var id = "ty62YzGryU4"
var tries = 0
var thumb = "http://img.youtube.com/vi/" + id + "/maxresdefault.jpg"
var img = new Image()
img.onload = function(){ console.log('ok'); done(id, thumb) }
img.onerror = function(){
switch (tries++){
case 0:
img.src = thumb = "http://img.youtube.com/vi/" + id + "/hqdefault.jpg"
break;
case 1:
img.src = thumb = "http://img.youtube.com/vi/" + id + "/default.jpg"
break;
case 2:
done(id, thumb)
break;
}
}
img.src = thumb
if (img.complete) img.onload()
然而情況並非如此 - 雖然我在控制檯中看到404錯誤,但onload和onerror回調函數都不會觸發,因此從不會調用done
。
如果我設置了img.crossOrigin = "Anonymous"
,onerror回調觸發了...針對每個縮略圖,因爲可恥的跨源資源共享策略。
我也試圖起草一個XMLHttpRequest,但無濟於事:
xmlhttp = new XMLHttpRequest()
xmlhttp.onreadystatechange = function() {
console.log(xmlhttp.readyState)
console.log(xmlhttp.status)
};
xmlhttp.open('GET', url, true);
xmlhttp.send(null);
無論我設置X-Requested-With: XMLHttpRequest
與否,readyState的去從1
到4
但狀態始終是零!
有沒有什麼方法可以看到這個特定的圖像是否給404沒有使用API?
我會檢查firefox的live http頭文件或類似於chrome中的檢查器的內容,但最後你會使用api。 - juuuuuelz桑塔納 – pepper