如何在动态加载javascript文件后添加回调
How to add callback after dynamically loading javascript file
我有以下功能:
function require(url)
{
var e = document.createElement("script");
e.src = url;
e.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
}
这允许在运行时动态加载javascript,并且我需要在加载一些新文件后添加回调
例如,当我
require('className.js');
就在这次呼叫之后
var a = new window[className];
文件尚未加载,因此会生成一个错误。
您可以在script元素上添加onLoad,但要注意,在一些旧版本的IE上有点bug。
以您的代码为参考:
function require(url, callback)
{
var e = document.createElement("script");
e.src = url;
e.type="text/javascript";
e.addEventListener('load', callback);
document.getElementsByTagName("head")[0].appendChild(e);
}
require("some.js", function() {
// Do this and that
});
根据Simone Gianni的回答,如果你想加载一组js文件,并在最后运行一个回调,你想确保所有文件都已加载,你可以递归地执行如下操作:
function loadList(list, i, callback)
{
require(list[i], function()
{
if(i < list.length-1)
{
loadList(list, i+1, callback);
}
else
{
callback();
}
});
}
呼叫:
loadList(jsList, 0, function()
{
// code that applies after all URLs in jsList have loaded
});
相关文章:
- 如何将json文件添加到grunt构建中
- 如何将 JavaScript 和 CSS 文件添加到 MagentoModule
- 如何将jQuery文件添加到导航网站
- 将图像从文件添加到 HTML5 画布
- Drupal 7 将 jQuery 文件添加到所有页面
- 尝试将外部JS和CSS文件添加到我的rails应用程序中
- mongodb用户配置文件添加输入时出现问题
- 通过JSZip将文件添加到现有的zip存档中
- 如何避免为我的每个html文件添加ExpressJS app.get()
- 为文件添加下载选项
- javascript向文本文件添加/从中删除
- 将JavaScript文件添加到WordPress主题
- 将js文件添加到流星项目中
- jquery.filer编辑模式动态文件添加
- 使用javascript/jquery将外部文件添加到$_FILES数组中
- Joomla JS 文件添加
- 使用 spring 将 JS 文件添加到 JSP 文件时获得 404
- JavaScript JSzip将文件添加到每个循环
- 将本地 JavaScript 文件添加到页面
- 姜戈;在自定义小部件中向媒体文件添加变量