Javascript文件加载回退。document.write()的替代方案

Javascript文件加载回退。document.write()的替代方案,javascript,jquery,document.write,fallback,Javascript,Jquery,Document.write,Fallback,您可能熟悉旧的Jquery加载回退: <script>window.jQuery || document.write('<script src="https://example.com/jquery.js"></script>')</script> 无论我将这个脚本或新的JS文件放在何处,在本例中,('head')[0]已经在正文中的所有其他JS之前,它都“异步”加载它 还有其他选择吗,或者我在2019年末继续运行document.write()

您可能熟悉旧的Jquery加载回退:

<script>window.jQuery || document.write('<script src="https://example.com/jquery.js"></script>')</script>
无论我将这个脚本或新的JS文件放在何处,在本例中,
('head')[0]
已经在正文中的所有其他JS之前,它都“异步”加载它


还有其他选择吗,或者我在2019年末继续运行
document.write()

加载和解析JQuery需要一些时间。因此,在附加脚本后使用(小)超时

此代码段将条件加载包装到立即执行的匿名函数中:

(myScripting=>{
如果(!window.$){
设j=document.createElement('script');
j、 src='//code.jquery.com/jquery-3.4.1.slim.min.js';
文档。查询选择器(“头”)。追加子项(j);
setTimeout(myScripting,200);
}否则{
myScripting();
}
})(JQILoadedSomyScript可以启动);
//把你的主要脚本放在这里
函数JqIsLoadedSoMyScriptingCanStart(){
//额外支票
如果(!window.$){
警报(“抱歉,JQuery未加载,无法继续”);
返回;
}
log(“jqueryin-place?”);
log($(“头脚本”)[1]);
}

将使用jQuery的代码放在onload()函数中

var jQuery1 = document.createElement('script');
jQuery1.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js";

jQuery1.onload = function () {
        var $ = window.jQuery;
        $.when(
               $.getScript("https://someOtherScript.js"),  //if you need
               $.Deferred(function (deferred) {
               $(deferred.resolve);
        })
        ).done(function () {
        console.log("all scripts loaded!!");
        doNextTask(); //some other code which uses jQuery
});
};
在onreadystatechange中将jQuery附加到文档中

document.onreadystatechange = function () {
 if (document.readyState == "complete") {
    // document is ready. 
    document.head.appendChild(jQuery1);
 }
 }
document.onreadystatechange = function () {
 if (document.readyState == "complete") {
    // document is ready. 
    document.head.appendChild(jQuery1);
 }
 }