0

我在我的 HTML 中包含一个巨大的 javascript 文件(500K)。有没有一种聪明的方法可以知道它是否已加载。我能想到的一种方法是在其构造函数中有一个变量来初始化并通知我。加载是异步的,在包含该 JS 的 function 之前我无法继续。

谢谢

4

6 回答 6

6

通过使用 jQuery,您可以处理加载脚本文件时运行的回调函数:

$.getScript("yourScriptFile.js", function(){
  // What to do when the script is loaded
});

文档

于 2009-01-22T08:11:38.673 回答
3

作为对奥斯卡答案的澄清:

<script type='text/javascript' src='script.js'></script>
<script type='text/javascript'>
 alert('the file has loaded!'); 
 //Anything here will not be executed before the script.js was loaded
</script>

此外,如果文件很大,最好在页面加载后加载它,以便您在连接速度较慢的情况下可以在加载之前使用该页面:

<头部>
<script type='text/javascript' src='script.js'></script>
</head>
<正文>
 在脚本完成加载之前,这里不会呈现任何内容
</正文>

更好的是:

<头部>
</head>
<正文>
 我将立即被渲染
</正文>
<script type='text/javascript' src='script.js'></script>
</html>

这样用户就可以快速获得页面,然后才需要等待 javascript 功能。

于 2009-01-22T08:19:53.213 回答
0
<SCRIPT LANGUAGE="JavaScript" SRC="filename">
</SCRIPT>

??

于 2009-01-22T07:56:18.500 回答
0

您是否尝试过压缩 javascript 文件?将一些函数移动到单独的 Javascript 文件中,并且只包含所需的 javascript?

于 2009-01-22T08:01:41.377 回答
0

您可以在脚本文件的末尾调用一个函数,该函数将通知页面上的脚本它已准备好使用。

于 2009-01-22T08:16:47.900 回答
0

也许这个问题可以重述:我怎么知道我的脚本被加载到一个 html 页面中?将脚本放在页面底部可以确保所有 DOM 元素都可用于您的脚本。当您想知道您的脚本是否可用时,您应该检查要运行的函数是否可用。也许这个构造函数可以帮助:

function Wait(what,action,id){
 var _x = this,
     rep = document.getElementById('report'),
     cnt = 0,
     timeout = 5,
     interval = 100;

  _x.id = id;

  if (!(what instanceof Function)) {
   return true; //or say something about it
  }

  function dowait() {
   cnt += interval;
   if (what())
   {
      clearInterval(_x.iv);
      action();
      return true;
   }
   if (cnt>(timeout*1000))
   {
      clearInterval(_x.iv);
          //[do some timeout-action]
      return true; 
   }
 }
 _x.iv = setInterval(dowait,interval);

}

构造函数将一个函数(返回一个布尔值)作为它的第一个参数。像

function(){return document.getElementById('someelement').innerHTML = '';}

因此,如果您在 javascript 之前包含此内容,则可以执行以下操作:

var testfn = 
     function(){return document.getElementById('someElement').innerHTML = '';},
   callback = 
     function(){alert('someElement is empty')},
   dummy = null;
window.onload=function(dummy=new Wait(testfn,calllback);
于 2009-01-22T13:16:53.423 回答