脚本加载完成后如何开始执行代码

时间:2013-07-21 21:54:59

标签: javascript jquery

我有这段代码:

$(document).ready(function() {
    window.addEventListener('DOMContentLoaded', function() {
    var s = d.createElement('script');
    s.async = false;
    s.src = 'file.js';
    s.id = 'script';
    d.body.appendChild(s);
    });
});

$(window).load(function() {
    workwithvariablesInfilejs();
});

似乎document.ready首先触发,然后window.load触发。但是如果尝试访问file.js的变量我会遇到麻烦,因为似乎在window.load之后加载了file.js脚本。我怎么能等到加载file.js?或者有更好的方法来组织这段代码吗?

3 个答案:

答案 0 :(得分:2)

你可以使用getscript方法:http://api.jquery.com/jQuery.getScript/ 然后在“.done”回调中调用“workwithvariablesInfilejs()”。

$.getScript("file.js")
.done(function(script, textStatus) {
  console.log( textStatus );
})
.fail(function(jqxhr, settings, exception) {
  $( "div.log" ).text( "Triggered ajaxError handler." );
});

答案 1 :(得分:1)

使用$(window).load();代替$(document).ready()。有关详细说明,请参阅here

答案 2 :(得分:1)

您可以修改逻辑,在将脚本标记附加到页面后触发加载事件。

请参阅:How to check if an asynchronously loaded script has finished loading in javascript

由于您使用的是JQuery,因此可以使用JQuery.getScript