动态显示进度条
来源:互联网 发布:淘宝网电脑下载安装 编辑:程序博客网 时间:2024/06/06 06:52
截图效果:
视频效果:
在进度条中,每一个格子都是一个对象,通过控制每个对象的背景色来模拟任务完成的进度。通过定期向服务器端发送请求来获得一个改变值的参数,其实也许可以在客户端进行这样一个工作,有待尝试。
静态页面:progressBar.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax进度条实例</title>
<script type="text/javascript">
var xmlHttp;
var key;
var bar_color="green";//设置进度条颜色
var span_id="block";
var clear=" "
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function go(){
createXMLHttpRequest();
checkDiv();
var url="servlet/ProgressBarServlet?task=create";
var button=document.getElementById("go");
button.disabled=true;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=goCallback;
xmlHttp.send(null);
}
function goCallback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
setTimeout("pollServer()",1000);
}
}
}
function pollServer(){
createXMLHttpRequest();
var url="servlet/ProgressBarServlet?task=poll&key="+key;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=pollCallback;
xmlHttp.send(null);
}
function pollCallback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
var percent_complete=xmlHttp.responseXML.getElementsByTagName("percent")[0].firstChild.data;
var index=processResult(percent_complete);
for(var i=1;i<=index;i++){
var elem=document.getElementById("block"+i);
elem.innerHTML=clear;
elem.style.backgroundColor=bar_color;
var next_cell=i+1;
if(next_cell>index&&next_cell<=9){
document.getElementById("block"+next_cell).innerHTML
=percent_complete+"%";
}
}
if(index<9){
setTimeout("pollServer()",1000);
}else{
document.getElementById("complete").innerHTML="加载完成!";
document.getElementById("go").disabled=false;
}
}
}
}
function processResult(percent_complete){
var ind;
if(percent_complete.length==1){
ind=1;
}else if(percent_complete.length==2){
ind=percent_complete.substring(0,1);
}else{
ind=9;
}
return ind;
}
function checkDiv(){
var progress_bar=document.getElementById("progressBar");
if(progress_bar.style.visibility=="visible"){
clearBar();
document.getElementById("complete").innerHTML="";
}else{
progress_bar.style.visibility="visible";
}
}
function clearBar(){
for(var i=1;i<10;i++){
var elem=document.getElementById("block"+i);
elem.innerHTML=clear;//clear的初始值为三个空格
elem.style.backgroundColor="#CCFFFF";
}
}
</script>
</head>
<body bgcolor="#CCFFFF">
<h1>Ajax 进度条示例</h1>
加载进度条:
<input type="button" value="开始加载" id="go" onclick="go();"/>
<p/>
<table align="center">
<tbody>
<tr><td>
<div id="progressBar" style="padding:2px;border:solid black 2px;visibility:hidden">
<span id="block1"> </span>
<span id="block2"> </span>
<span id="block3"> </span>
<span id="block4"> </span>
<span id="block5"> </span>
<span id="block6"> </span>
<span id="block7"> </span>
<span id="block8"> </span>
<span id="block9"> </span>
</div>
</td></tr>
<tr><td align="center" id="complete"></td></tr>
</tbody>
</table>
</body>
</html>
服务器端Servlet:ProgressBarServlet.java
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ProgressBarServlet extends HttpServlet {
private int counter=1;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String task=req.getParameter("task");
String res1="";
if(task.equals("create")){
res1="<key>1</key>";
counter=1;
}else{
String percent="";
switch(counter){
case 1: percent="10";break;
case 2: percent="23";break;
case 3: percent="35";break;
case 4: percent="51";break;
case 5: percent="64";break;
case 6: percent="73";break;
case 7: percent="89";break;
case 8: percent="100";break;
}
counter++;
res1="<percent>"+percent+"</percent>";
}
PrintWriter out = res.getWriter();
res.setContentType("text/xml");
res.setHeader("Cache-Control", "no-cache");
out.println("<response>");
out.println(res1);
out.println("</response>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
0 0
- 动态显示进度条
- 继承CWinthread,显示动态的启动进度条
- 异步加载动态进度条,显示百分比
- 异步加载动态进度条,显示百分比
- 动态进度条
- 动态进度条
- 显示动态进度条时,画界面的代码
- php+javascript动态显示服务器运行程序的进度条(转)
- Android NumberProgressBar:动态移动显示百分比进度的进度条
- 自定义圆形进度条实现动态显示指定进度
- 显示进度条
- 显示进度条
- 进度条显示
- 【C#】如何在查询数据库表并显示到DataGridV中的进度条动态显示?
- 动态实时进度条
- abap动态进度条
- abap动态进度条
- php js 动态进度条
- 分页显示的一个案例
- 利用Yahoo! Search API开发自已的搜索引擎-JavaScript版
- AJAX笔记心得
- 动态加载列表框实现级联菜单的效果
- 自动刷新页面技术
- 动态显示进度条
- 动态更新Web页面
- 创建工具窗口提示
- 自动完成技术,像百度一样通过AJAX技术来搜索备选项
- 通过Yahoo+Search+API访问Web服务实现自己的搜索引擎
- Servlet分页的大概思路
- VS2013单元测试
- (转)java 中如何进行md5加密--韩顺平
- 连接池的设计