jQuery在底部,等待<头部>直到它被加载
jQuery on the bottom, wait execution script on <head> until it is loaded
我在SO中看到了类似的问题,有人想做同样的事情。不同的情况是,我有一个轻量级的脚本,它监听我有意放在页面顶部的文档根顶部的事件冒泡,我不想把它包装在$(document).ready()中。它看起来像这样:
<html>
<head>
<script>
document.documentElement.onclick = function (e) {
//$.ajax call using jQuery. Possible that jQuery is not loaded when page is not completely loaded
}
</script>
</head>
然后在页面底部附近,我包括这样的jQuery:
<body>
<script src="./jQuery.js"></script>
</body>
</html>
正如你在<head>
上看到的,当我使用$.ajax
对某个地方进行ajax调用时,jQuery可能还没有加载,所以当有人点击DOM上的某个东西时,它可能会抛出$ is undefined error
,而jQuery还没有加载。我的解决方法可能是使用settimeout,希望稍后加载jquery,代码的工作方式如下:
if (typeof $ === 'undefined'){
setTimeout(doAJAXJquery, 50);
}else{
$.ajax(//blablabla) //jQuery loaded and ready to use!!
}
但这是一个非常肮脏的黑客。我应该如何知道jQuery何时完成加载?我放的CCD_ 4只有一个我自己编的任意值。当然,如果jquery没有,它仍然不会起作用;还没有加载,并且已经过了50ms。
有没有更好的解决方法,当jQuery未定义时,它会稍后重试,或者将执行ajax的函数放在一些回调中,当jQuery准备好时执行?谢谢
怎么样
<head>
<script type="text/javascript">
var init = function(){
document.documentElement.onclick = function (e) {
//$.ajax call using jQuery. Possible that jQuery is not loaded when page is not completely loaded
}
}
</script>
</head>
<body>
<script src="./jQuery.js"></script>
<script type="text/javascript">
init();
</script>
</body>
如果您想执行等待jQuery加载的函数列表(或事件"已激发"),您可以创建自己的"就绪"函数:)
var runList = new Array(), timer = setInterval(function(){
if (typeof(jQuery) != 'undefined')
{
clearInterval(timer);
if (runList.length>0) for(var i in runList) runList[i]();
}
}, 50);
runList.push(function(){alert(1);});
runList.push(function(){alert(2);});
var jQuery = 1;
相关文章:
- Ajax文件加载和<输入>文件加载
- 将所选类别循环到ul>李用加载更多按钮
- 记住<选择>重新加载页面
- 仅当窗口宽度>940像素,无论是通过页面加载还是调整大小
- 当通过<a>标签,它无法正确加载
- 对象#<s>没有方法'应用'角度重新加载
- 使用加载时的Codeigner动态javascript->看法
- 如何重新加载<img/>
- javascript页面加载检查是否存在具有特定类的span(在<tr>下),如果不存在,则删除整个<
- HTML5<音频>:点击下一首歌曲时停止加载/缓冲
- “;预加载“;<音频>影响window.onload事件时间
- 如何仅在窗口宽度从桌面(>1024px)更改为移动(<1025px)导航时重新加载页面
- 如何在页面加载到<对象>要素
- 排除加载<嵌入>项
- 我的<画布>加载特定PDE文件时调整大小
- jQuery加载并不总是以<图片>元素
- 创建<ins>元素,用于在加载时进行广告,不带JQuery
- 如何制作可点击的HTML文本,加载<脚本>
- SharePoint<按钮>元素执行页面的不需要的重新加载
- 如何加载<h>元素使用jquery