我正在使用jquery $.getScript(url, callback)
加载外部javascript,我想要实现的是锁定浏览器,直到加载脚本,我尝试使用$ .ajax而不是async: false
但是没有更好的结果
答案 0 :(得分:2)
尝试使用$.holdReady()
$.holdReady(true);
var data;
function callback(response) {
if (response) {
data = response;
$.holdReady(false)
};
};
var request = $.getScript(url);
$(document).ready(function() {
$("body").append(data.result)
});
$.holdReady(true);
var data;
function callback(response) {
if (response) {
data = response;
$.holdReady(false)
};
};
var request = $.getScript("https://gist.githubusercontent.com/guest271314/e2edd364cc20ad7e9e14/raw/f7d7b756005ad6d2b88cf0211f78a2990d7d2dc7/content.json");
$(document).ready(function() {
$("body").append(data.result)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 1 :(得分:0)
看看http://requirejs.org/。我发现它对应用程序脚本依赖非常有用和实用。
听起来你需要在其他事情发生之前加载/运行脚本。这正是requireJS可以用来做的事情!
答案 2 :(得分:0)
还有另一种方法可以做到这一点:
function get_external_script(url){
var settings = {
async : false,
};
$.ajax(url,settings);
}
您可以使用此功能加载外部JavaScript,这也将执行它。
答案 3 :(得分:0)
$.getScript
创建<script>
标记并将其附加到<head>
,因此无法同步。相反,您必须使用$.ajax
,然后评估返回的javascript。
$.ajax({
url: 'somescript.js',
async: false,
dataType: 'text',
success: function (script) {
eval(script);
}
});
那就是说,这可能完全是解决你想要解决的问题的错误方法。