动态添加的Javascript延迟加载

5
我需要在页面加载后动态加载一些Javascript。
大致过程如下:
1. 页面加载。 2. 添加包含src =“file1.js”的脚本元素。 3. 添加包含src =“file2.js”的脚本元素。
由于“file2.js”依赖于“file1.js”,会遇到一个问题-因为它较小,所以“file2.js”首先加载并立即引发错误,因为其依赖关系不存在。
有没有办法推迟这些新脚本的评估/执行,直到它们全部加载完毕?(实际上不止两个脚本)
如果我只是将这些脚本正常嵌入已编写的HTML页面中,那么浏览器会加载所有脚本,然后对其进行评估。但是,由于我正在随时添加脚本元素,它的行为与正常情况不同。
谢谢

你是在使用像jQuery这样的库,还是纯粹的JavaScript? - Izkata
如果你愿意深入了解脚本加载,我强烈建议你看一下require.js。 - m90
你是如何插入脚本的?你可能只需要钩入scriptonload事件。 - Halcyon
感谢您的评论。情况是我有一个运行良好的Web应用程序 - 有几个JavaScript文件彼此依赖,但浏览器似乎可以很好地处理这些异步加载。现在的要求是将我的应用程序注入到先前的着陆页面中。我可以使用XHR并从一个DOM树复制头和正文元素来完成此操作。只是JavaScript文件的行为不同。如果需要,我会查看RequireJS,但想知道是否有一个神奇的设置。 - tarling
3个回答

4

1

你能否将文件的内容封装在函数中,在所有内容加载完成后调用它们?


是的 - 这是个好主意,但我正在寻找更具可移植性的东西。也就是说,无论是独立的还是注入的,我都想重用完全相同的代码。 - tarling

1

给你两个建议:

  1. 看看http://requirejs.org/。它可以解决这个问题,以及其他问题。
  2. 或者,自己编写一个简单的JavaScript加载器函数。这将是一个使用ajax加载脚本,然后在完成时调用回调函数的函数。以嵌套方式调用此加载器函数,以便按正确顺序加载脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接