Javascript-脚本加载顺序
Javascript - script load order
我有这个代码:
$("#pop_mali_oglas").on('click', function(){
TINY.box.show({url:'<?php echo base_url()?>form/novi_unos/<?php echo $p ?>'});
$.getScript("<?php echo JS ?>vendor/jquery.ui.widget.js");
$.getScript("<?php echo JS ?>tmpl.min.js");
$.getScript("<?php echo JS ?>load-image.min.js");
$.getScript("<?php echo JS ?>canvas-to-blob.min.js");
$.getScript("<?php echo JS ?>bootstrap.min.js");
$.getScript("<?php echo JS ?>bootstrap-image-gallery.min.js");
$.getScript("<?php echo JS ?>jquery.iframe-transport.js");
$.getScript("<?php echo JS ?>jquery.fileupload.js");
$.getScript("<?php echo JS ?>jquery.fileupload-ip.js");
$.getScript("<?php echo JS ?>jquery.fileupload-ui.js");
$.getScript("<?php echo JS ?>locale.js");
$.getScript("<?php echo JS ?>main.php");
return false;
});
第一行是最后加载(TINY.box.show({url:'<?php echo base_url()?>form/novi_unos/<?php echo $p ?>'});
),我需要它先加载,然后再加载其余的。我该怎么做?
我猜第二个参数(ajax true|false)默认为true,这就是为什么它看起来是最后加载的。传入0作为第二个参数,以强制其同步。
这些是异步加载的——它们将以加载的任何顺序出现。为了确保一个在其他加载之前加载,最好的方法是加载一个,然后在第一个加载时触发的回调中加载其他的。
类似的东西
$.getScript(first script to load, function(){
// other get script functions
});
编辑
显然,这与脚本加载无关,而是执行顺序。
第一个tinybox行将首先执行,但是,在其他行执行并返回之后,调用它的结果可能才可见。这可能是由于tinybox命令正在异步加载文件。我上面的答案仍然适用,但您需要了解tinybox如何在异步事件成功完成后执行回调。
问题是所有脚本都是异步加载的,这基本上意味着它们都是同时启动的,这意味着它们很可能会破坏一切。如果您依赖于按顺序加载它们。。
看看过去关于运行函数或任何javascript的方法的答案。
就像tkone在他的例子中显示的那样,该函数将首先运行TINY.box.show函数,然后再运行所有$.getScript函数。
$("#pop_mali_oglas").on('click', function(){
scriptload(function() {
getscripts()
return false;
});
});
function scriptload(callback) {
tinyboxfunc()
callback();
}
function tinyboxfunc() {
TINY.box.show({url:'<?php echo base_url()?>form/novi_unos/<?php echo $p ?>'});
};
function getscripts() {
$.getScript("<?php echo JS ?>vendor/jquery.ui.widget.js");
$.getScript("<?php echo JS ?>tmpl.min.js");
$.getScript("<?php echo JS ?>load-image.min.js");
$.getScript("<?php echo JS ?>canvas-to-blob.min.js");
$.getScript("<?php echo JS ?>bootstrap.min.js");
$.getScript("<?php echo JS ?>bootstrap-image-gallery.min.js");
$.getScript("<?php echo JS ?>jquery.iframe-transport.js");
$.getScript("<?php echo JS ?>jquery.fileupload.js");
$.getScript("<?php echo JS ?>jquery.fileupload-ip.js");
$.getScript("<?php echo JS ?>jquery.fileupload-ui.js");
$.getScript("<?php echo JS ?>locale.js");
$.getScript("<?php echo JS ?>main.php");
};
您应该在$.getScript:之前设置$.ajaxSetup
$.ajaxSetup({
async: false
});
对于记录,$.getScript()确实是异步执行的,所以在使用它之前先设置它。
相关文章:
- 使用Require.js按照依赖关系的顺序加载JavaScript
- 如何确保coffeescript按顺序加载
- 使用webcomponenetsjs的HTMLImports以意外的执行顺序加载导入-firefox
- zend按顺序加载js文件
- Angular + Requirejs - 以错误的顺序加载
- Javascript 文件以不需要的顺序加载
- Django 模板似乎没有以正确的顺序加载 Backbone.js
- 按顺序加载脚本.js和使用.js
- 让 html 和 javascript 在 rails 中以正确的顺序加载
- 从 JavaScript 代码中按顺序加载 JavaScript
- 如何使用 HTML/javascript 以预定义的顺序加载图像
- kineticJS按顺序加载图像(并设置fillPatternImg)不透明度补间不起作用
- 按gulp / browserify顺序加载javascript插件
- Javascript未按正确的顺序加载
- Javascript承诺以相反的顺序加载
- 按顺序加载图像,有延迟,无脚本回退
- 脚本未按顺序加载
- RequireJS和依赖于按特定顺序加载的脚本
- 顺序加载fadeIn效果与Javascript和jQuery
- 可以Promise按顺序加载多个url