构建一个进度条,用于在显示之前加载所有内容
Building a Progress bar for Loading everything before display
你好,我真的试着搜索之前问…我试图使用jquery的进度条,我发现了很多信息,问题是大多数的例子只是"动画"我的意思是,他们没有真正显示加载过程的百分比。而我却找不到办法。
我正在尝试使用这个http://www.htmldrive.net/items/show/791/Very-Beautiful-CSS3-And-JQuery-progress-bar
与本题的正确答案混合。如何创建一个jQuery加载栏?(如flash网站上使用的)
但是我就是无法合并
$.when($.ajax("video1.ogv"))
.then(function () {
videoLoaded[1] = true;
updateProgressBar();
});
$.when($.ajax("video2.ogv"))
.then(function () {
videoLoaded[2] = true;
updateProgressBar();
});
$.when($.ajax("video3.ogv"))
.then(function () {
videoLoaded[3] = true;
updateProgressBar();
});
var updateProgressBar = function() {
// iterate though the videoLoaded array and find the percentage of completed tasks
$("#progressbar").progressbar("value", percentage);
}
我给你们看的CSS栏。真正显示#main_content或视频中已加载内容的百分比,如示例..
希望我能说清楚,因为我的英语很差
为什么不这样做呢?只需将其更改为AJAX并使用success
作为触发器。基本上是一个永无止境的gif动画,等待你的数据加载。
<div id="chartDiv"></div>
var chartDiv = document.getElementById("chartDiv");
var loadingImg = document.createElement("img");
var newImg = document.createElement("img");
loadingImg.src = "http://i1267.photobucket.com/albums/jj559/rizkytanjo96/loading.gif";
chartDiv.appendChild(loadingImg);
function placeLoaded() {
chartDiv.removeChild(loadingImg);
chartDiv.appendChild(newImg);
}
function getNew() {
newImg.addEventListener("load", placeLoaded, false);
newImg.src = "http://i1276.photobucket.com/albums/y462/staffpicks/Animated_GIFs/ahhhh.gif";
}
setTimeout(getNew, 10000);
在jsfiddle 或者,如果你不想要一个动画gif,你可以用javascript做这样的事情。
#pwidget {
background-color:lightgray;
width:254px;
padding:2px;
-moz-border-radius:3px;
border-radius:3px;
text-align:left;
border:1px solid gray;
}
#progressbar {
width:250px;
padding:1px;
background-color:white;
border:1px solid black;
height:28px;
}
#indicator {
width:0px;
background-image:url("http://img827.imageshack.us/img827/269/shadedgreen.png");
height:28px;
margin:0;
}
#loading {
text-align:center;
width:250px;
}
var pwidget = {
maxprogress: 250,
actualprogress: 0,
itv: 0,
delay: 10,
prog: function () {
if (pwidget.actualprogress >= pwidget.maxprogress) {
clearInterval(pwidget.itv);
return;
}
var indicator = document.getElementById("indicator");
pwidget.actualprogress += 1;
indicator.style.width = pwidget.actualprogress + "px";
if (pwidget.actualprogress === pwidget.maxprogress) {
pwidget.restart();
}
},
start: function () {
pwidget.itv = setInterval(pwidget.prog, pwidget.delay);
},
stop: function () {
clearInterval(pwidget.itv);
},
restart: function () {
pwidget.actualprogress = 0;
pwidget.stop();
pwidget.start();
},
element: function () {
var pwidget = document.createElement("div"),
progressbar = document.createElement("div"),
indicator = document.createElement("div"),
loading = document.createElement("div");
pwidget.id = "pwidget";
progressbar.id = "progressbar";
indicator.id = "indicator";
loading.id = "loading";
loading.textContent = "Loading ...";
progressbar.appendChild(indicator);
pwidget.appendChild(progressbar);
pwidget.appendChild(loading);
return pwidget;
}
};
var chartDiv = document.getElementById("chartDiv");
var widget = pwidget.element();
var newImg = document.createElement("img");
function placeLoaded() {
pwidget.stop();
chartDiv.removeChild(widget);
chartDiv.appendChild(newImg);
}
function getNew() {
newImg.addEventListener("load", placeLoaded, false);
newImg.src = "http://i1276.photobucket.com/albums/y462/staffpicks/Animated_GIFs/ahhhh.gif";
}
chartDiv.appendChild(widget);
pwidget.start();
setTimeout(getNew, 10000);
在jsfiddle 或者jQueryUI有一个进度条,你可以做类似的事情,我上面的例子
大多数网站之所以采用加载gif而不是百分比,部分原因是百分比确实不可靠。
你可能会遇到这样的情况,当你以精确的百分比显示实际进度时,发生了一些事情,导致流量减慢,当加载75%需要5秒,加载25%需要10秒时,用户会感到沮丧。有很多例子,但我就到此为止。
如果可能的话,我会采取加载方法,而不是仅仅因为这个原因。只要有工作完成的迹象,用户通常是满意的。
[EDIT]抱歉,我花了一点时间才回到这里,给你们一个例子。这是非常基本的,这取决于你如何显示这个加载条,以及你将如何将它添加到页面上。重点在这一行
$('<div>').progressbar({ value: false })
希望这对你有帮助。jQuery进度条确实允许百分比,但除非绝对必要,否则我会尽量避免使用它。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-2.0.0.js"></script>
<script src="Scripts/jquery-ui-1.10.3.js"></script>
<link href="Content/themes/base/jquery-ui.css" rel="stylesheet" />
<script>
function show_loading()
{
$('<div>').dialog
({
title: 'loading...',
modal: true,
closeOnEscape: true,
draggable: false,
resizable: false
})
.append($('<div>').progressbar({ value: false }));
}
</script>
</head>
<body>
<button id="show_loading" onclick="show_loading();">show loader</button>
</body>
</html>
- 如何在生成下载文件时显示加载动画
- 如何在谷歌字体加载时显示加载图像
- 现在可以在加载addThis时显示加载吗
- 单击时选择2(未选中),显示加载微调器javascript
- 如何在网页加载时显示加载内容,并在页面完全加载时隐藏此内容
- 在弹出窗口中显示加载消息
- 使用jquery/ajax显示加载图像
- 在引导轮播加载之前显示加载微调器
- 是否可以在页面开始加载之前显示加载gif/image
- 单击链接后显示加载程序
- 等待数据时显示加载程序
- 在谷歌地图上显示加载消息
- 只想在页面上未加载初始数据时显示加载gif
- 如何在加载选项卡内容时显示加载图像
- 如何在ajax请求中显示加载微调器
- 当javascript图像转盘加载36个图像时,我可以显示加载指示器吗
- 隐藏/显示加载功能不起作用
- Jquery Chosen插件-通过Ajax动态填充列表时显示加载图标
- 有没有一种方法可以用jQuery捕获JavaScriptPageMethods调用?(显示加载屏幕)
- jquery图片库显示加载程序gif