在动态添加的javascript文件中提供访问功能
Access function present in dynamically added javascript file
我正在添加一些javascript文件。然后我需要使用其中的函数。在firebug的Scripts
选项卡中,我可以看到脚本已经添加。函数LoadScript1Function
出现在一个脚本中,LoadScript2Function
出现在另一个脚本中。但是我得到的错误是:
`ReferenceError: LoadScript1Function is not defined`
下面是我的代码:
function LoadScripts(){
try{
var allScripts = document.getElementsByTagName('script');
for (var x = 0; x < jsPaths.length; x++) {
if($.inArray(jsPaths[x], allScripts) == -1){
loadScript(jsPaths[x], null);
}
}
async(LoadScript1Function, function(){ ; });
async(LoadScript2Function, function(){ ; });
}
catch(e){
console.log(e);
}
}
// Load script
function loadScript(url, callback){
var script = document.createElement("script");
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
// Async call
function async(fn, callback) {
setTimeout(function() {
fn();
callback();
}, 0);
}
尝试按照adeneo
的建议执行。
loadScript(jsPaths[x], function(){
if(jsPaths[x].indexOf('Script1') != -1){ // script name check in the path
LoadScript1Function();
}
});
我可以看到一个问题在你的setTimeout
呼叫-超时是0
。Javascript通常是单线程的,可以锁定浏览器的其他组件,因此超时0将不允许下载任何内容。你必须增加这些毫秒,并检查脚本是否已经可操作;如果不是,则安排一个新的超时。虽然我不明白为什么首先需要异步函数
在类似的情况下,我喜欢做的是尝试访问由事物提供的属性或函数,然后等待更多,如果它失败。
我不喜欢回调的一点是,你必须按照平台开发人员所准备的铁道去做,而且对灵活性的任何额外需求都会使你的整个代码脱轨。毕竟,对所有事情都使用setTimeout可能会更好。然后你可以快速处理"丢失的连接",更新任何悸动器/进度条,任何东西。
相关文章:
- javascript函数访问ios本机功能
- 为什么可以't我访问Chrome内置功能$
- 可以't访问Angular.js服务中的功能
- 访问内部功能范围的元素,而不是敲除中的外部
- 在接受功能上访问燃料UX标语牌中的“this”
- 控制器切换后匿名功能中的访问服务数据发生变化
- 使用Flash CC和Createjs的子访问功能
- 通过访问DOM添加功能
- 模态无法访问其显示功能
- JqueryUI访问修改拖拽功能
- 当某些用户已经访问某个页面时,阻止访问或禁用该页面中的某些功能
- 访问谷歌地图事件中的Backbone.View功能
- 如何在车把模板中访问功能
- 如何在右键单击链接并从上下文菜单访问功能后获取链接的 DOM
- 访问功能内的成员/从外部设置成员
- 咖啡脚本访问功能
- 如何通过按钮从express.js访问功能到客户端
- 不一致的“与”行为-没有访问功能-这是一个chrome的错误
- 在动态添加的javascript文件中提供访问功能
- 如何访问功能