我有一个案例需要检查页面上是否存在jQuery,如果不存在,我需要加载它。我创建一个脚本标记并引用外部jQuery库。在继续使用脚本的其余部分之前,如何等待在页面上加载库?
更新:
继Gion的建议之后看起来像是什么:
if (typeof jQuery === 'undefined') {
var j = document.createElement('SCRIPT');
j.type = 'text/javascript';
j.src = '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(j);
j.onload = function () {
var section = document.createElement('DIV');
section.setAttribute('style', 'height:300px; width:250px; position: fixed; right: 0px; top: 100px;z-index: 9999; border-style:solid;border-width:1px;');
section.innerHTML = '<p>steps</p><textarea name="steps"></textarea><p>expected results</p><textarea name="results"></textarea><p><input type="button" name="submit" value="add test case" /></p>';
document.getElementsByTagName('body')[0].appendChild(section);
};
}
答案 0 :(得分:6)
<script type="text/javascript">
if(typeof jQuery === 'undefined')
document.write('<sc'+'ript type="text/javascript" src="jquery.js"></scrip'++'t>');
window.onload = function(){
// jquery should be present here
});
</script>
答案 1 :(得分:1)
您可以检查jquery是否像这样加载
window.onload = function(){
if(typeof jQuery == "undefined"){
// jquery is not available
}
}
如果没有加载jquery,我建议使用像requirejs http://requirejs.org/这样的javascript加载器
答案 2 :(得分:0)
您可以将其设置为window.onload
window.onload = function () { alert("It's loaded!") }
答案 3 :(得分:0)
包含jQuery文件,只有在需要时才需要先检查
function afterLoad(){
if(typeof(jQuery)!=='undefined')
return;
var element1 = document.createElement(“script”);
element1.src = “pointToYourjQueryFile.js”;
element1.type=”text/javascript”;
document.getElementsByTagName(“head”)[0].appendChild(element1);
}
以这种方式在窗口加载时调用此函数...
<body onload="afterLoad()"?>
答案 4 :(得分:0)
window.onload = function(){
var script,head;
if(!jQuery){
script = document.createElement('script');
document.getElementsByTagName('head')[0].appendChild(script);
script.onload = function(){
alert('jQuery loaded');
}
script.src = 'path_to_jquery';
}
}
答案 5 :(得分:0)
Modernizr使用这一行:
<script>window.jQuery || document.write('<script src="./js/libs/jquery-1.6.2.min.js"><\/script>')</script>
但是document.write被认为是不安全的。因此,我将其与已发布的内容联系起来:
if(!window.jQuery)
{
var element1 = document.createElement(“script”);
element1.src = “somefile.js”;
element1.type=”text/javascript”;
document.getElementsByTagName(“head”)[0].appendChild(element1);
}
另一方面,Google使用:
(function() {
if(window.jQuery) return;
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'some.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
将脚本附加到网站上已存在的第一个标记。如果你有至少一个&lt; script&gt;在你的网站上,使用这个。据我所知,它被认为是最好的解决方案。