2010-12-20 83 views
4

我需要使用JavaScript輪詢圖像,並且需要在圖像位於其位置時執行操作。這是我爲此任務編寫的代碼。通過javascript圖像輪詢

/*----Image handling script starts here----*/ 
var beacon = new Image(); 
beacon.onload = function() { 
    console.log('Image found'); 
    console.log(this.width,this.height); 
    window.clearInterval(timer); 
}; 
beacon.onerror = function(){  
    console.log('Image not found'); 
} 
var timer = window.setInterval(function(){ 
    console.log('sending the request again'); 
    beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif"; 
},2000); 
/*----Image handling script ends here----*/ 

問題是,一個GET請求後,響應被緩存,並要求不要讓每次送我設置SRC。如果您檢查NET選項卡,它僅在第一個src集中發送請求並緩存響應。

每當我的代碼設置src時,我需要發送一個新的圖像請求。任何解決方法?

回答

2

每次請求具有不同查詢字符串的圖像。瀏覽器將它視爲一個唯一的URL,並不會將其放入緩存中。你可能會逃避這一點,因爲在請求圖像時,Web服務器可能會忽略查詢字符串中的任何內容。以下應該提出100個請求:

for (var i=0; i<100; i++) 
{ 
    beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif?" + i; 
} 
4

更改您的src以包含當前EPOCH時間作爲變量。

beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif?" + 
    date.getTime(); 

查詢字符串,每次使用一個不同的變量會錯過緩存,因爲據瀏覽器而言,圖像是不同的(或潛在的可能),每次請求的圖像時,有是沒有限制你問的次數,因爲時間有希望不會停止...