从页脚加载带有Javascript的JQuery
如果你想直截了当,我的问题是: 是否有任何方法可以调用特定的脚本以首先在javascript中加载 有关详细信息,请阅读以下内容: 我有一个javascript文件,它正在从HTML的底部加载。不幸的是,头部没有JQuery,所以我必须通过这个javascript文件添加它从页脚加载带有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 =
//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需要站点正确显示,那么这并不重要!