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

lock browser while loading external scripts

本文关键字:锁定浏览器 脚本 外部 加载      更新时间:2023-09-26

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

尝试使用 $.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>

看看 http://requirejs.org/。 我发现它对于应用程序脚本依赖项非常有用和实用。

听起来您需要一个脚本来加载/运行其他事情之前发生其他事情。 这正是requireJS可以用来做的!

还有另一种选择可以实现这一点:

function get_external_script(url){
    var settings = {
        async : false,
    };
    $.ajax(url,settings);
}

您可以使用此函数加载外部 JavaScript,这也将执行它。

$.getScript创建一个<script>标记并将其附加到<head>,因此不能同步。相反,你必须使用 $.ajax ,然后评估返回的 javascript。

$.ajax({
    url: 'somescript.js',
    async: false,
    dataType: 'text',
    success: function (script) {
        eval(script);
    }
});

也就是说,这可能是解决您要解决的任何问题的完全错误的方法。