Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟加载jquery后替换$(document).ready(function())_Javascript_Jquery_Deferred - Fatal编程技术网

Javascript 延迟加载jquery后替换$(document).ready(function())

Javascript 延迟加载jquery后替换$(document).ready(function()),javascript,jquery,deferred,Javascript,Jquery,Deferred,我在页面底部有一种延迟加载脚本。它可以加载脚本,但现在缺少旧的jquery onload事件 var dfLoadStatus = 0; var dfLoadFiles = [ ["//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"], ["//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js", "/js/jquery.

我在页面底部有一种延迟加载脚本。它可以加载脚本,但现在缺少旧的jquery onload事件

var dfLoadStatus = 0;
var dfLoadFiles = [
      ["//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"],
      ["//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js",
       "/js/jquery.unveil.js",
       "/scripts/js/jquery.cookie.js"]

];


function downloadJSAtOnload() {
    if (!dfLoadFiles.length) return;

    var dfGroup = dfLoadFiles.shift();
    dfLoadStatus = 0;

    for (var i = 0; i < dfGroup.length; i++) {
        dfLoadStatus++;
        var element = document.createElement('script');
        element.src = dfGroup[i];
        element.onload = element.onreadystatechange = function() {
            if (!this.readyState || this.readyState == 'complete') {
                dfLoadStatus--;
                if (dfLoadStatus==0) downloadJSAtOnload();
            }
        };
        document.body.appendChild(element);
    }
}

if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;

如何为jquery函数创建替换函数/事件,以检测何时加载了所有脚本,或者至少jquery已加载?

我的浏览器正在缓存文件,因此旧代码对我有效。我重新编写了它,现在它对我有效

JavaScript

var dfIndex = 0;
var dfLoadFiles =[
     "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js",
     "//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js",
     "//cdn.rawgit.com/luis-almeida/unveil/master/jquery.unveil.js",
     "//cdn.rawgit.com/carhartl/jquery-cookie/master/src/jquery.cookie.js"];


function downloadJavasSript(){
    loadJavaScript(dfLoadFiles[dfIndex]); 
}
function loadJavaScript(file,callback){
    var head=document.getElementsByTagName("head")[0];
    var script=document.createElement('script');
    script.src=file;
    script.type='text/javascript';
    //real browsers
    script.onload=isJavaScriptLoaded;
    //Internet explorer
    script.onreadystatechange = function() {
        if (this.readyState == 'complete') {
            isJavaScriptLoaded();
        }
    };
    head.appendChild(script);
}

function isJavaScriptLoaded(e){
  dfIndex++;
  if (dfIndex === dfLoadFiles.length){
    pageLoaded();
  } else {
    loadJavaScript(dfLoadFiles[dfIndex]); 
  }
}


function pageLoaded(){
  console.log('page loaded');
  $("img").unveil();
}

if (window.addEventListener)
    window.addEventListener("load", downloadJavasSript, false);
else if (window.attachEvent)
    window.attachEvent("onload", downloadJavasSript);
else window.onload = downloadJavasSript;

我一定是遗漏了什么。这不起作用。调用pageloded()函数时未加载defect.js…defect.js是否在正确的目录中并且命名正确?
/js/jquery.defect.js
是…`function pageload(){console.log('page-loaded');$(document.ready(function()){console.log('and jquery too');});`This tels me taht jquery正在工作}当我清除缓存时,它也失败了。我更新了答案,现在它在清除缓存时工作正常。请参阅
var dfIndex = 0;
var dfLoadFiles =[
     "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js",
     "//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js",
     "//cdn.rawgit.com/luis-almeida/unveil/master/jquery.unveil.js",
     "//cdn.rawgit.com/carhartl/jquery-cookie/master/src/jquery.cookie.js"];


function downloadJavasSript(){
    loadJavaScript(dfLoadFiles[dfIndex]); 
}
function loadJavaScript(file,callback){
    var head=document.getElementsByTagName("head")[0];
    var script=document.createElement('script');
    script.src=file;
    script.type='text/javascript';
    //real browsers
    script.onload=isJavaScriptLoaded;
    //Internet explorer
    script.onreadystatechange = function() {
        if (this.readyState == 'complete') {
            isJavaScriptLoaded();
        }
    };
    head.appendChild(script);
}

function isJavaScriptLoaded(e){
  dfIndex++;
  if (dfIndex === dfLoadFiles.length){
    pageLoaded();
  } else {
    loadJavaScript(dfLoadFiles[dfIndex]); 
  }
}


function pageLoaded(){
  console.log('page loaded');
  $("img").unveil();
}

if (window.addEventListener)
    window.addEventListener("load", downloadJavasSript, false);
else if (window.attachEvent)
    window.attachEvent("onload", downloadJavasSript);
else window.onload = downloadJavasSript;