我找到了这个不错的jQuery preloader/progress bar,但是我无法让它按照预期的那样工作。问题是它首先加载我的页面,在我的整个页面加载后,0%-100%条显示很快,之后它再次重新加载我的页面。因此,它不会在页面加载之前显示进度条,它也会再次加载页面。
这是我的实施代码:
<head>
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="js/jquery.queryloader2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("body").queryLoader2();
});
</script>
</head>
<body>
My content...No other reference in here for the Jquery preloader
</body>
感谢您提前提供任何帮助。
答案 0 :(得分:3)
我可能非常非常错误,但在我看来:
我创建了 a test fiddle 并找到了以下内容:
completeImageLoading();
永远不会被调用,因为它只绑定到图像元素。当没有图像时 - &gt;没有约束力 - &gt;没有触发 - &gt;什么都没有完成 - &gt;你可以使用叠加0%,如小提琴所示,不运行(当页面未运行时,jsfiddle没有看到相对图像)。<img src="http://example.com/image.jpg">
- 那么它将无效,因为插件无法识别它们。实际上它使用$.ajax
来加载图像,这显然会在尝试访问另一个域时产生错误。<强>建议:强>
关于预加载器的修改
关于预加载器...如果您不强制显示进度,那么您可以使用window.onload
技巧。在DOM ready $(...)
上,您创建了一个不透明的页面覆盖,其中包含“请稍候...”消息和一些动画,如果您喜欢它。然后等待 window.onload event “在文档加载过程结束时触发...当文档中的所有对象都在DOM中时,所有图像和子框架已完成加载。“当window.onload
触发时,您只需删除叠加层即可 - 页面已准备就绪!
关于预加载器的编辑2
实际上,你甚至不需要$(...)
......我到底在想什么?只需在html中创建叠加层(一个带有唯一ID的简单div),将其设置为填充屏幕并为其指定z-index:1337
CSS属性,使其覆盖整个页面。然后,在window.onload上:
window.onload = function () {
// Grab a reference to your overlay element:
var overlay = document.getElementById('myOverlay');
// Check if the overlay really exists
// and if it is really appended to the DOM,
// because if not - removeChild throws an error
if (overlay && overlay.parentNode && overlay.parentNode.nodeType === 1) {
// Remove overlay from DOM:
overlay.parentNode.removeChild(overlay);
// Now trash it to free some resources:
overlay = null;
}
};
当然,它不是真正的预装载,而只是模仿。
这是 a working fiddle you can play with 。
P.S。我个人并不欣赏预加载器,但那只是我......
答案 1 :(得分:1)
试试这个(删除document.ready事件并简单地调用它): -
<script type="text/javascript">
$("body").queryLoader2();
</script>