2012-05-01 156 views
7

我在我們的網站上有一些跟蹤像素,如果他們的服務器出現故障或速度緩慢,我想要保護它們免受影響我們的用戶體驗。指定瀏覽器嘗試加載給定img的最長時間的最簡單方法是什麼 - 即嘗試100毫秒然後放棄? (我寧願不跟蹤給定的客戶,也不願意讓第三方服務器上的服務器掛在我們的網站上)。<img src> w/timeout?

回答

2

你應該在文檔準備好時加載它們。 或最後一行(在html中)。這樣 - 它不會傷害用戶體驗。準備好的文件也可以用於jQuery。

但你可以使用window.load。

作爲一項規則(並非總是) - 所有腳本都應該位於頁面的末尾。

如果要強制超時KILL:

創建img標籤。

load事件附加到所述IMG(這個函數將設置標誌:下載= 1)

設置src。

setTimeout功能你會殺死IMG。

怎麼樣?

如果在X MS下載了== 0,然後殺死。

所以:每個加載事件(來自IMg)都設置一個標誌(下載= 1)。

你的超時功能不關心什麼!在x MS之後,她要殺死img - 只有下載的== 0。

+0

是的,但狀態欄仍然顯示正在下載的數據,所以看起來還沒有完成。我真的很想有一個實際的方法來定義超時。 –

+0

@MichaelReston看我的編輯。 –

+1

爲什麼不考慮條件而不是刪除''? – Electro

-1

您可以在IMG標記中調用服務器進程。讓它擔心超時負載。

+0

標籤中已經有一個服務器進程:它提供了「圖像」。這是花費時間,而這需要在客戶端取消。如果取消交給服務器,取消也需要時間。 –

+0

所以穿上它,看着時鐘。 – ethrbunny

3

您可以插入<img>和JavaScript,並使用setTimeout()在100ms後刪除它。

示例使用jQuery:

var tracker = $("<img>", { src: trackingUrl }).appendTo(document.body); 
setTimeout(function() { tracker.remove(); }, 100); 
0

你將不得不使用JavaScript來做到這一點,沒有什麼天然的HTML/HTTP,會做此頁爲基礎。谷歌周圍的「HTML IMG超時」。