2017-01-02 105 views
0

一旦文件被完全加載,我的JavaScript開始改變像img源和背景圖像的東西。 這些更改以不同的方式發生(通過預加載JS或直接更改src屬性爲例)。但是,對於這些更改,需要加載新文件。 這些更改隨機發生,隨機來源爲隨機元素,因此我無法提供元素或來源列表。jQuery/javascript檢查是否有任何東西正在加載

在某些時候,我的JavaScript(jQuery)需要檢查是否有任何東西仍在加載,或者是否全部加載完畢。

換句話說,我需要一種方法來檢查是否有網絡流量正在進行。

理想情況下,我wan't辦法變量loading每一個請求是由加載文件,如果完成該變量設置爲false那些加載過程的時間設置爲true,所以我可以用的東西像while (loading==true) {loopscript()}在加載時循環一些腳本。

有沒有任何jQuery的方式來做到這一點?

回答

0

您可以使用JQuery加載事件,但您需要確保將setInterval調用嵌入到頭部。下面的例子是加載一張帶有5000ms加載圖像的頁面。它每1000毫秒輸出到控制檯。

<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
    <script> 
 
    var intervalID = setInterval(function() { 
 
    console.log("loading"); 
 
    }, 1000); 
 
    </script> 
 
</head> 
 
<body> 
 
    <script> 
 
    jQuery(window).load(function() { 
 
    clearInterval(intervalID); 
 
    }); 
 
    </script> 
 
    <img src="http://deelay.me/5000/http://deelay.me/img/5000ms.gif"> 
 
</body>

+0

呵呵任何其他事件可能被觸發?請使用此 – charlietfl

+0

提供符合OP要求的演示。我之前嘗試過這樣做,但使用$(window).load(...)似乎無法解決我的問題。事件不會在每次開始加載時觸發,這對於我所需要的是必需的。相反,它看起來只是在窗口加載時觸發,就是這樣。 – eds1999

+0

@charlietfl我應該先試用我的方法。我測試過,但沒有奏效。對於那個很抱歉。 – volatilevar

0

您可以創建使用$.Deferred每一個動作一個承諾,推動所有承諾陣列。

然後使用$.when()更新所有承諾解決後的加載變量。

每個人的承諾將需要一個負載事件處理程序中解決的圖像時,或者當動作完成

相關問題