从页脚加载带有Javascript的JQuery

从页脚加载带有Javascript的JQuery,javascript,jquery,Javascript,Jquery,如果你想直截了当,我的问题是: 是否有任何方法可以调用特定的脚本以首先在javascript中加载 有关详细信息,请阅读以下内容: 我有一个javascript文件,它正在从HTML的底部加载。不幸的是,头部没有JQuery,所以我必须通过这个javascript文件添加它 //Get head element var head = document.getElementsByTagName("head")[0]; //Create and insert JQuery var jquery =

如果你想直截了当,我的问题是: 是否有任何方法可以调用特定的脚本以首先在javascript中加载

有关详细信息,请阅读以下内容:

我有一个javascript文件,它正在从HTML的底部加载。不幸的是,头部没有JQuery,所以我必须通过这个javascript文件添加它

//Get head element
var head = document.getElementsByTagName("head")[0];

//Create and insert JQuery
var jquery = document.createElement('script');
jquery.type = 'text/javascript';
jquery.src = 'http://image.iloqal.com/lib/fe6b/m/1/jquery.1.7.2.js';

head.insertBefore(jquery,head.childNodes[4]);

function thescripts() { 

    var fancybox = document.createElement('script');
    fancybox.type = 'text/javascript';
    fancybox.src = 'http://image.iloqal.com/ilejquery.fancybox-1.3.4.pack.js';
    head.appendChild(fancybox);

    var thebody = document.getElementsByTagName('body')[0];

    thebody.appendChild(thediv);
    thediv.appendChild(theimg);


    //Run fancybox
    thebody.onload = function() {

    $('#lightbox').ready(function() {
        $("#lightbox").fancybox().trigger('click');
    });
}
};
 if(jquery.attachEvent){
     jquery.attachEvent("onload",thescripts());
} else {
     jquery.onload = thescripts();  
}
我需要做的是添加一个JQuery lightbox插件

我的问题是,当我加载页面时,有时候JQuery并不是第一个加载的东西。因此,我收到错误“jQuery未定义”。这将引发插件中未定义方法的更多错误

这种情况并非总是发生,只是有时会发生。这让我觉得这是一个装载/操作顺序问题

有没有办法保证我的JQuery脚本是第一个加载的

这是我的一些javascript文件

//Get head element
var head = document.getElementsByTagName("head")[0];

//Create and insert JQuery
var jquery = document.createElement('script');
jquery.type = 'text/javascript';
jquery.src = 'http://image.iloqal.com/lib/fe6b/m/1/jquery.1.7.2.js';

head.insertBefore(jquery,head.childNodes[4]);

function thescripts() { 

    var fancybox = document.createElement('script');
    fancybox.type = 'text/javascript';
    fancybox.src = 'http://image.iloqal.com/ilejquery.fancybox-1.3.4.pack.js';
    head.appendChild(fancybox);

    var thebody = document.getElementsByTagName('body')[0];

    thebody.appendChild(thediv);
    thediv.appendChild(theimg);


    //Run fancybox
    thebody.onload = function() {

    $('#lightbox').ready(function() {
        $("#lightbox").fancybox().trigger('click');
    });
}
};
 if(jquery.attachEvent){
     jquery.attachEvent("onload",thescripts());
} else {
     jquery.onload = thescripts();  
}

感谢您的帮助

您正在立即调用脚本,尽管您尝试不这样做。使用以下命令:

jquery.onload = thescripts; // notice no parentheses
此外,您的
thebody.onload
策略将不起作用。使用
$(文档).ready

$(document).ready(function{
    $('#lightbox').ready(function() {
        $("#lightbox").fancybox().trigger('click');
    });
});

您正在立即调用脚本,尽管您尝试不这样做。使用以下命令:

jquery.onload = thescripts; // notice no parentheses
此外,您的
thebody.onload
策略将不起作用。使用
$(文档).ready

$(document).ready(function{
    $('#lightbox').ready(function() {
        $("#lightbox").fancybox().trigger('click');
    });
});

试试这个。在从页脚调用的javascript文件中添加这段代码

<script type="text/javascript">

if(typeof jQuery == 'undefined'){
        document.write('<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></'+'script>');
  }

</script>

if(typeof jQuery==“未定义”){
文件。写(“”);
}

如果未加载jquery,则包括jquery。我想这会解决你的问题。

试试这个。在从页脚调用的javascript文件中添加这段代码

<script type="text/javascript">

if(typeof jQuery == 'undefined'){
        document.write('<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></'+'script>');
  }

</script>

if(typeof jQuery==“未定义”){
文件。写(“”);
}
如果未加载jquery,则包括jquery。我认为这将解决您的问题。

使用
$(function(){…在这里做您的事情…})
是确保在执行脚本之前加载jQuery的一种方法,但您可能会让自己更加困难,并执行以下操作:

thebody.onload = function() {
   RunMyjQuery();
}

function RunMyjQuery() {
    if (typeof $ === 'undefined') {
         setTimeout(RunMyjQuery, 500);
    }else{
        $('#lightbox').ready(function() {
            $("#lightbox").fancybox().trigger('click');
        });
    }
}
使用
$(function(){…在这里做你的事…})
是确保在执行脚本之前加载jQuery的一种方法,但您可能会让自己更加困难,并执行以下操作:

thebody.onload = function() {
   RunMyjQuery();
}

function RunMyjQuery() {
    if (typeof $ === 'undefined') {
         setTimeout(RunMyjQuery, 500);
    }else{
        $('#lightbox').ready(function() {
            $("#lightbox").fancybox().trigger('click');
        });
    }
}

谢谢你的回复。我以前尝试过这个方法,但它不一定能解决这个问题,但它肯定有更快的加载时间,允许jquery先加载。我会确保这一点得到实施。谢谢谢谢你的回复。我以前尝试过这个方法,但它不一定能解决这个问题,但它肯定有更快的加载时间,允许jquery先加载。我会确保这一点得到实施。谢谢我正在尝试这个,我需要重新组织一些脚本。谢谢我正在尝试这个,我需要重新组织一些脚本。谢谢递归!我怎么没想到?!我不再犯错误了谢谢!不过,这确实给我带来了一个我不熟悉的新错误“create”只能在扩展进程中使用。这是onload和attaching事件的问题吗?不应该,但很难说到底是什么问题,但如果是createElement,在onload处理程序中应该可以正常工作。另外,整个过程中应该有某种超时,因此如果jQuery由于某种原因根本没有加载,那么间隔不会永远持续下去,另一方面,如果jQuery需要站点正确显示,那么这并不重要!递归!我怎么没想到?!我不再犯错误了谢谢!不过,这确实给我带来了一个我不熟悉的新错误“create”只能在扩展进程中使用。这是onload和attaching事件的问题吗?不应该,但很难说到底是什么问题,但如果是createElement,在onload处理程序中应该可以正常工作。另外,整个过程中应该有某种超时,因此如果jQuery由于某种原因根本没有加载,那么间隔不会永远持续下去,另一方面,如果jQuery需要站点正确显示,那么这并不重要!