使用jQuery加载外部javascript并抑制";主线程上的同步XMLHttpRequest已被弃用…“;
我已经读了好几篇关于这个话题的帖子,但还没有找到解决办法。我正在使用jQuery设置一个简单的插件,它也依赖于一些其他文件(例如语言文件)。我希望为最终用户提供一个尽可能简单的设置,以便动态加载这些javascript文件。执行此操作时,我可能会遇到主线程上的警告使用jQuery加载外部javascript并抑制";主线程上的同步XMLHttpRequest已被弃用…“;,javascript,jquery,asynchronous,include,Javascript,Jquery,Asynchronous,Include,我已经读了好几篇关于这个话题的帖子,但还没有找到解决办法。我正在使用jQuery设置一个简单的插件,它也依赖于一些其他文件(例如语言文件)。我希望为最终用户提供一个尽可能简单的设置,以便动态加载这些javascript文件。执行此操作时,我可能会遇到主线程上的警告Synchronous XMLHttpRequest已被弃用,因为它会对最终用户的体验造成有害影响。或者我不得不延迟脚本,因为异步调用尚未在需要包含文件内容的位置完成 我尝试了几种方法在不延迟脚本的情况下实现这一点: 尝试1。通过附在身
Synchronous XMLHttpRequest已被弃用,因为它会对最终用户的体验造成有害影响。
或者我不得不延迟脚本,因为异步调用尚未在需要包含文件内容的位置完成
我尝试了几种方法在不延迟脚本的情况下实现这一点:
尝试1。通过附在身体上
$('body', document).append('<script type="text/javascript" src="myfile.js"></script>');
尝试3-使用$.ajax,与$.getScript大致相同
$.ajaxSetup({ async: false });
$.getScript('myfile.js')
.done(function(script, textStatus) {
// success code... map variables
})
.fail(function(jqxhr, settings, exception) {
if( window.console ) {
console.log('error loading the file);
}
});
$.ajax({
url: 'myfile.js',
dataType: 'script',
async: false,
success: function(script, textStatus) {
// success code... map variables
}
});
尝试4-使用$.holdReady(),但这似乎无效,因为插件仅在$(document).ready(function(){$('.myDemo').myplugin();}
中启动
$.holdReady( true );
$.getScript( 'myfile.js', function() {
// success code.. map variables
$.holdReady( false );
});
如何附加/包含外部文件而不必延迟脚本,也不必确保未触发警告。这是可能的,还是我要求同时冻结和融化水?我现在已通过嵌套ajax请求和构建
完成
回调来修复它。我不确定这是否是一个任务这是一种理想的方式,但有两个外部文件(目前),它是可维护的
还有一个缺点:目前插件的每个实例都需要两个文件。因此,还应该实现某种缓存变量,并根据文件是否已经加载,在下一次迭代中是否应该加载它们
欢迎提出其他建议
$.ajax({
url: 'firstfile.js',
dataType: 'script',
success: function() {
// success code.. map variables
},
complete: function() {
$.ajax({
url: 'secondfile.js',
dataType: 'script',
success: function() {
// success code.. map variables
},
complete: function() {
// call function to continue the procedure
}
})
}
});
document.write(“”)
是同步的,因此它可以动态添加(在加载期间)并在其他需要的文件之前到达。也就是说,构建过程或libs的异步版本(require/amd)值得更快地创建和加载。如何创建文件的异步版本?基本上,外部文件包含一个带有嵌套数据的变量。例如,语言文件类似于var translations={myKey:“这是一段文本”,mySecondKey:“其他值”}