在博客帖子中加载jQuery会导致它冻结
Loading jQuery in a blogger post causes it to freeze
我已经创建了一些代码,人们可以复制并粘贴到他们的网站中,它应该可以在blogspot中工作。这段代码需要jQuery和jCarousel插件。我使用
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
在运行我的 JavaScript 代码之前加载 jQuery。问题是一些博主模板已经加载了jQuery,然后运行上面的代码会导致博客文章永远不会加载(它只是停留在加载屏幕上)。
我可以在if (typeof jQuery == "undefined")
之后使用 javascript 加载它,但要让 jCarousel 插件工作,必须首先加载 jQuery,所以这会导致帖子加载但轮播中断。
有人知道任何解决方案吗?
你不能检查jQuery的存在,之后仍然加载jCarousel吗?
<script type="text/javascript">
if (typeof jQuery === "undefined") {
document.write('<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"><'/script>');
}
</script>
<script src="http://path/to/jcarousel" type="text/javascript"></script>
再三考虑,我不相信这总是有效的。 我不认为这保证jQuery会在jCarousel之前加载。 我想出了一个似乎更强大的替代解决方案。 它确保加载 jQuery,然后使用 jQuery 使用 $.getScript()
加载库。 然后从 getScript
的回调调用您的代码。 这可确保一切以正确的顺序发生:
<script type="text/javascript">
if (typeof jQuery !== "undefined") {
loadLibs();
} else {
var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery.js';
document.getElementsByTagName('head')[0].appendChild(script);
var timeout = 100; // 100x100ms = 10 seconds
var interval = setInterval(function() {
timeout--;
if (window.jQuery) {
clearInterval(interval);
loadLibs();
} else if (timeout <= 0) {
// jQuery failed to load
clearInterval(interval);
}
}, 100);
}
function loadLibs() {
$.getScript("http://sorgalla.com/projects/jcarousel/lib/jquery.jcarousel.min.js", function(data, textStatus, jqxhr) {
myCode();
});
}
function myCode() {
$(document).ready(function() {
$('#mycarousel').jcarousel();
});
}
</script>
演示:http://jsfiddle.net/jtbowden/Y84hA/2/
(将左栏中的框架更改为任何版本的 jQuery 或其他库。 它应该始终正确加载轮播)
编辑:
这个版本类似,但对库使用<head>
加载,就像jQuery一样。 它比$.getScript()
更快:
http://jsfiddle.net/jtbowden/y8nGJ/1/
相关文章:
- 用于发现哪个JS/jQuery脚本正在冻结页面的工具或技术
- Firefox在调用函数(jquery)时冻结
- 仅限 Firefox/IE - 元素 show() jquery 后冻结的 gif 动画
- AJAX验证在jQuery中“冻结”
- jQuery AJAX 文件上传冻结
- 使用 jQuery 在客户端上验证失败后删除冻结面板
- 在博客帖子中加载jQuery会导致它冻结
- 为什么jQuery Mobile Simple Dialogue在用户点击过快时会冻结
- JQuery可排序列表,其中一些元素按顺序冻结
- Jquery脚本正在冻结浏览器,但正在工作
- 如何在jquery flot上向下滚动时冻结、固定标签
- jQuery幻灯片和停止问题:动画元素随着鼠标的快速移动而冻结
- 如何冻结“启动”按钮在jquery动画
- 使用jquery插件进行分页,当加载50k时记录导致整个系统冻结.如何解决这个问题
- jQuery动画宽度冻结iPad
- jquery中的多个Ajax请求会冻结浏览器
- JQUERY/JavaScript -故障代码导致谷歌浏览器冻结
- 冻结jquery中的表头
- JQuery UI对话框:导致冻结的密码输入
- 使用JQuery冻结CSS3转换