Javascript异步加载,内部有jquery append()函数
Javascript async load with jquery append() function inside
编辑:我正在寻找一种将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
?
我猜我需要像那样用异步来附加它
$('head').append('<script async="" src="http://other-website.com/other-file.js" type="text/javascript"></script>');
要完全加载所有javascript异步,对吗?
但在other-file.js
中,我在file.js
中使用了一些函数
是的,您需要添加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".
});
这取决于JS运行的位置(其中包含.append()
行(,以及它是否具有async
属性。
如果它在文档的head
中运行,并且它正在附加到head
,那么如果附加的<script>
标记没有async
属性,它将不会异步(将阻塞(。
原因是file.js
很可能在处理完文档的<head>
之前加载并解析。JavaScript将阻止浏览器的HTTP连接,直到它解析完任何没有async
的外部JS,这意味着它将在<head>
中在其下方添加新的<script>
标记,然后继续处理它并阻止HTTP连接,除非存在async
属性。
相关文章:
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- 文本编辑后,append函数不适用于文本区域
- Append元素在运行两次函数后不显示
- 在.append之后运行函数
- onclick函数不适用于.append
- Jquery-append函数花费了太多时间
- d3-append()带有函数参数
- append()不是ajax数据srting中的jQuery函数
- 某些函数在 .append 之后不起作用
- jquery .append 函数的问题
- 将变量作为参数传递给 onclick 函数,在 .append JQuery 中使用双引号和单引号
- 未捕获的类型错误:未定义不是 .append 函数上的函数
- jquery,.append函数dosen't传输参数
- 如何在ajax append函数中传递一个变量(使用razor将其传递到html元素中)
- AngularJS ng-click()在控制器中的.append('')函数的动态调用中不起作用
- 如何在jquery中的append函数中为html标签生成变量id
- 当我使用append函数附加某个内容时,我无法使用jquery控制它
- jQuery append()函数不追加每个< >元素
- 为什么使用innerHTML向DOM添加大量元素比jquery的append()函数慢?
- 在angular js的append函数中传递索引值