修改:我正在寻找一种异步方式" include"另一个javascript文件。
如果我加载这样的javascript文件怎么办:
<script src="http://my.website.com/file.js" async="" type="text/javascript"></script>
我在javascript文件中
$('head').append('<script src="http://other-website.com/other-file.js" type="text/javascript"></script>');
此文件是否仍会加载异步,包括other-file.js
?
我猜我需要像那样
添加async$('head').append('<script async="" src="http://other-website.com/other-file.js" type="text/javascript"></script>');
要完全加载所有javascript异步,对吧?
但在other-file.js
内,我在file.js
答案 0 :(得分:0)
是的,您需要添加async
属性,如果您依赖其他文件,则需要一些复杂的逻辑来了解它何时被加载。
有为此目的而构建的库,你看过它们吗?我可以推荐RequireJS,这样你可以像这样包装代码:
require(["helper/util"], function(util) {
//This function is called when scripts/helper/util.js is loaded.
//If util.js calls define(), then this function is not fired until
//util's dependencies have loaded, and the util argument will hold
//the module value for "helper/util".
});
答案 1 :(得分:0)
这取决于JS在哪里运行,其中包含.append()
行,以及 it 是否具有async
属性。
如果它在您的文档的head
中运行,并且它附加到head
,那么如果附加的<script>
标记没有&#,它将不会异步(将阻止) 39; t具有async
属性。
原因是file.js
很可能在文档的<head>
被处理之前加载并被解析。 JavaScript将阻止浏览器的HTTP连接,直到它完成解析没有async
的任何外部JS,这意味着它将在{{1}下面添加新的<script>
标记然后继续处理它并阻止HTTP连接,除非存在<head>
属性。