加载外部脚本时锁定浏览器

时间:2014-12-23 16:16:13

标签: javascript jquery ajax getscript

我正在使用jquery $.getScript(url, callback)加载外部javascript,我想要实现的是锁定浏览器,直到加载脚本,我尝试使用$ .ajax而不是async: false但是没有更好的结果

4 个答案:

答案 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);
    }
});

那就是说,这可能完全是解决你想要解决的问题的错误方法。

相关问题