2017-01-02 99 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()更新所有承诺解决后的加载变量。

每个人的承诺将需要一个负载事件处理程序中解决的图像时,或者当动作完成

相关问题