加载外部脚本时锁定浏览器
lock browser while loading external scripts
我正在使用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);
}
});
也就是说,这可能是解决您要解决的任何问题的完全错误的方法。
相关文章:
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在循环锁定浏览器时暂停执行(用fiddles更新)
- 如何执行“;“同步”;javascript调用服务器而不锁定浏览器
- 如何处理对后端服务进行相同调用的多个浏览器脚本
- Jquery:Ajax 请求看起来是同步的,锁定浏览器
- 跨浏览器脚本,使我的网站成为主页
- 加载外部脚本时锁定浏览器
- 异步ajax请求锁定浏览器
- jQuery正在锁定浏览器
- 大型表单或javascript锁定浏览器
- ie7、ie8和firefox3.6浏览器脚本错误
- XUL:如何允许从浏览器脚本访问顶部窗口(当src为localhost时)
- 在打开选项卡期间通过Jquery锁定浏览器当前选项卡URL栏
- 防止递归函数锁定浏览器
- 有任何方法来运行一个客户端浏览器脚本的电话
- 在不锁定浏览器的情况下,将大数据JSON从REST请求反序列化为对象
- 将自动浏览器脚本写入node.js
- Javascript浏览器脚本更改值
- 浏览器脚本是否强制要求在单个线程上运行
- 纳斯霍恩与浏览器脚本