如果JS下载没有完成,如何阻止

时间:2010-09-07 08:58:35

标签: javascript html browser

我通过将JS文件附加到HTML头来异步下载JS文件。 现在在html体中,在使用JS文件之前,我想检查JS文件是否已经下载并且是否存在于缓存中。 如果缓存中没有JS文件(例如:在互联网连接缓慢的情况下),我想阻止它直到下载。 换句话说,如果JS下载不完整,我想模拟阻止JS下载的行为。

知道如何实现这一目标吗?

4 个答案:

答案 0 :(得分:1)

您可以在JS文件和HTML文件中实例化任何对象,您可以使用typeOf运算符检查该对象是否可用,因此如果typeof(x)未定义,您可以认为该文件尚未下载

答案 1 :(得分:0)

如果您可以控制HTMl文件和JS文件:在已经加载的代码中的某处定义一个“回调”函数,并从JS文件的末尾调用它。示例功能:

<html>
  <head>
  <script>
    function notify_file_is_loaded(identifier) {
      if (identifier === 'somefile.js') {
        // it's loaded!
        // run the code that (in synchronous mode) you'd block for 
      }
    }
  </script>
<!--- ... --->

和JS文件:

// somefile.js
// some JS code goes here
// ...snip...
notify_file_is_loaded('somefile.js');

答案 2 :(得分:0)

改为同步获取JS。只需使用html > head将脚本标记添加到src="<script-location>",浏览器就会同步执行此下载。

在这里进行观察: 在下载某些内容之前阻止用户体验不佳。如果使用优雅降级原则编写代码,则页面应仅激活可用的功能。你会让另一个网络开发者对你这么做吗?不,我不会 - 我会关闭该标签并继续前进:)

答案 3 :(得分:0)

您是否推迟通过JavaScript加载JavaScript文件?如果是这样,您应该能够使用onload事件处理程序在加载JavaScript文件后执行代码:

<script>
    var js = document.createElement('script');
    js.onload = function() {
        // your code goes in here
    }
    js.src = 'foo.js';
    document.body.appendChild(js);

</script>