我有这段代码:
$(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?或者有更好的方法来组织这段代码吗?
答案 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