`
menjoy
  • 浏览: 422805 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

javascript模拟windows control的进度条

阅读更多



<script>
 function xyProgressLG(xyID){
  this.xyProgressID = 'oProgress' + Math.random().toString().substr(2, 10) + xyID;

  this.max = 0;
  this.min = 0;
 
  this.width = 100;
  this.height = 20;
  this.currPos = 0;
  this.outerBorderColor = "black";
  this.outerBackColor = "white";
  this.innerBorderColor = "";
  this.innerBackColor = "blue";
  this.TextColor = "red";

  this.SetProgressTop = xySetProgressTop;
  this.SetProgressLeft = xySetProgressLeft;
  this.SetProgressWidth = xySetProgressWidth;
  this.SetProgressHeight = xySetProgressHeight;
  this.SetProgressBorderColor = xySetProgressBorderColor;
  this.SetProgressForeBorderColor = xySetProgressForeBorderColor;
  this.SetProgressBackColor = xySetProgressBackColor;
  this.SetProgressForeColor = xySetProgressForeColor;
  this.EnableProgressText = xyEnableProgressText;
  this.SetProgressTextFontSize = xySetProgressTextFontSize;
  this.SetProgressTextFontColor = xySetProgressTextFontColor;
  this.SetProgressTextFontFamily = xySetProgressTextFontFamily;

  this.SetProgressMax = xySetProgressMax;
  this.SetProgressMin = xySetProgressMin;
  this.UpdatePosition = xyUpdatePosition;
  this.UpdateToPosition = xyUpdateToPosition;
  this.UpdatePersent = xyUpdatePersent;
  this.UpdateToPersent = xyUpdateToPersent;

  xyProgressInit(this.xyProgressID);
  return this.xyProgressID;
 }
 function xyProgressInit(xyID){
  var div = document.createElement("div");
  div.id = xyID;
  div.style.position = "absolute";
  div.style.left = "100px";
  div.style.top = "100px";
  document.body.appendChild(div);

  var pro = document.createElement("div");
  pro.style.position = "absolute";
  pro.style.left = "0px";
  pro.style.top = "0px";
  pro.style.fontSize= "0px";
  pro.style.width = "100px";
  pro.style.height = "20px";
  pro.style.border = "1px solid black";
  pro.style.background = "white";
  pro.style.zIndex = "100";
  div.appendChild(pro);

  var proInner = document.createElement("div");
  proInner.id = xyID+"_Inner";
  proInner.style.position = "absolute";
  proInner.style.left = "1px";
  proInner.style.top = "1px";
  proInner.style.fontSize= "0px";
  proInner.style.width = "0px";
  proInner.style.height = "16px";
  proInner.style.border = "1px solid black";
  proInner.style.background = "blue";
  pro.style.zIndex = "102";
  pro.appendChild(proInner);

  var text = document.createElement("div");
  text.style.position = "absolute";
  text.style.left = "50px";
  text.style.top = "2px";
  text.style.fontSize= "11px";
  text.style.width = "40px";
  text.style.height = "16px";
  text.style.zIndex = "103";
  div.appendChild(text);
 }
 function xySetProgressTop(pStyleTop){
  try{
   var e = document.all(this.xyProgressID);
   e.style.top = pStyleTop;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressLeft(pStyleLeft){
  try{
   var e = document.all(this.xyProgressID);
   e.style.left = pStyleLeft;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressWidth(pWidth){
  try{
   var e = document.all(this.xyProgressID);
   e.style.width = pWidth;
   eOuter = e.children(0);
   eOuter.style.width = pWidth;
   this.width = pWidth;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressHeight(pHeight){
  try{
   var e = document.all(this.xyProgressID);
   e.style.height = pHeight;
   eOuter = e.children(0);
   eInner = e.children(0).children(0);
   eOuter.style.height = pHeight;
   eInner.style.height = pHeight-4;
   this.height = pHeight;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressBorderColor(pColor){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0);
   e.style.border = "1px solid "+pColor;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressForeBorderColor(pColor){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0).children(0);
   e.style.border = "1px solid "+pColor;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressBackColor(pColor){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0);
   e.style.background = pColor;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressForeColor(pColor){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0).children(0);
   e.style.background = pColor;
  }catch(e){
   alert(e.description);
  }
 }
 function xyEnableProgressText(bEnable){
  try{
   var e = document.all(this.xyProgressID);
   eText = e.children(1);
   if(bEnable){
    eText.style.display = "none";
   }else{
    eText.style.display = "";
   }
   var pos = e.style.width;
   var sel = eText.style.width;
   pos = (pos-sel)/2;
   eText.style.left = pos;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressTextFontSize(pSize){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(1);
   e.style.fontSize = pSize;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressTextFontColor(pColor){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(1);
   e.style.fontColor = pColor;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressTextFontFamily(pFamily){
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(1);
   e.style.fontFamily = pFamily;
  }catch(e){
   alert(e.description);
  }
 }
 function xySetProgressMax(pMax){
  this.max = pMax;
 }
 function xySetProgressMin(pMin){
  this.min = pMin;
 }
 function xyUpdatePosition(pPosition){   /*将progress增长或减小pPosition,其中,0<ppersent<max* <br="">  try{
   var max = this.max;
   var min = this.min;
   var e = document.all(this.xyProgressID);
   if(pPosition>max){
    return -1;
   }
   var len = this.width;
   var pos = this.currPos+(pPosition/(max-min))*len;
   eProgress = e.children(0).children(0);
   if(pos>=this.width){
    eProgress.style.width = this.width-4;
    this.currPos = pos;
   }else if(pos<=0){
    eProgress.style.width = 0;
    this.currPos = pos;
   }else{
    eProgress.style.width = pos;
    this.currPos = pos;
   }
   return this.currPos;
  }catch(e){
   alert(e.description);
   return -1;
  }
 }
 function xyUpdateToPosition(pPosition){   /*将progress更新到pPosition位置,其中,min<ppersent<max* <br="">  try{
   var max = this.max;
   var min = this.min;
   var e = document.all(this.xyProgressID);
   if(pPosition<min||pposition>max){
    return -1;
   }
   var len = this.width;
   var pos = ((pPosition-min)/(max-min))*len;
   eProgress = e.children(0).children(0);
   if(pos>=this.width){
    eProgress.style.width = this.width-4;
    this.currPos = pos;
   }else if(pos<=0){
    eProgress.style.width = 0;
    this.currPos = pos;
   }else{
    eProgress.style.width = pos;
    this.currPos = pos;
   }
   return this.currPos;
  }catch(e){
   alert(e.description);
   return -1;
  }
 }
 function xyUpdatePersent(pPersent){   /*从当前位置增长或减小pPersent%,pPersent大于零:增长,否则,减小*/
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0).children(0);
   var len = this.width;
   var pos = this.currPos;
   len = len*pPersent/100;
   pos += len;
   if(pos>this.width||pos<0){
    return -1;
   }
   e.style.width = pos;
   this.currPos = pos;
   return this.currPos;
  }catch(e){
   alert(e.description);
   return -1;
  }
 }
 function xyUpdateToPersent(pPersent){   /*从当前位置增长或减小到pPersent%*/
  try{
   var e = document.all(this.xyProgressID);
   e = e.children(0).children(0);
   var len = this.width;
   var pos = len*pPersent/100;
   if(pos>this.width||pos<0){
    return -1;
   }
   e.style.width = pos;
   this.currPos = pos;
   return this.currPos;
  }catch(e){
   alert(e.description);
   return -1;
  }
 }

 function xyNewID(){
  var d = new Date();
  var t = "oDraw_"+d.getTime().toString();
  return t;
 }
</script>


<script>
 var xy = new xyProgressLG("kitty");
 xy.SetProgressLeft(200)
 xy.SetProgressTop(200);
 xy.SetProgressWidth(200)
 xy.SetProgressHeight(20)
 xy.SetProgressMax(200)
 xy.SetProgressMin(50);


</script>
<script language="JavaScript">
function update(){
 xy.UpdatePosition(10)
 setTimeout("update()",100);
}

</script>
update
updatePosition
autoUpdate


 



 

分享到:
评论

相关推荐

    简单用JS模拟上传进度条

    本文将详细介绍如何使用JavaScript(JS)来模拟实现一个上传进度条,无需后台页面参与,但需注意服务器环境对跨域策略的影响。 首先,我们需要明白,前端的文件上传通常涉及两个主要步骤:选择文件和发送文件数据到...

    asp.net装载页面进度条以及Repeater分页

    在ASP.NET中,可以通过JavaScript和服务器端代码配合来创建一个简单的进度条效果。以下是一个简单的示例: ```html &lt;!DOCTYPE ...

    ASP.NET2.0 WEB实时进度条

    在ASP.NET 2.0中实现这样的功能,我们可以利用AJAX(异步JavaScript和XML)技术,以及ASP.NET AJAX Control Toolkit。 ASP.NET AJAX 提供了一套丰富的客户端脚本库和服务器控件,使得开发者能够轻松创建具有动态...

    asp.net ajax上传

    在ASP.NET AJAX上传中,通常会有一个自定义的进度条控件,它可以是HTML5的`&lt;progress&gt;`元素或者是使用CSS和JavaScript实现的模拟进度条。每当文件上传进度发生变化,服务器会返回当前的上传状态,前端通过AJAX回调...

    pushProgress:进度条和 PHP 服务器发送的事件

    描述中提到的“推送进度”意味着前端(可能是JavaScript)正在监听服务器发送的事件,每当服务器有新的进度信息时,前端会更新进度条。这个过程涉及到了前端和后端之间的实时通信,以及前端如何解析并显示这些事件。...

    Tiktok-Web-Audio-Control

    此外,可能还包括使用CSS或JavaScript来创建自定义的音频控制界面,如播放/暂停按钮、进度条、音量滑块等。 在实际应用中,为了保证兼容性和用户体验,开发者还需要考虑到不同浏览器对Audio API的支持情况,可能...

    C#多线程编程 四个显示线程计算结果的函数

    由于Windows Forms或WPF等UI框架的控件是线程安全的,即它们只能由创建它们的线程(主线程)进行修改。因此,从属线程不能直接修改UI控件。这时就需要使用到“封送处理”(Marshalling),这是跨线程通信的一种机制...

    cef3 winform

    Windows WinForm是.NET Framework提供的一种用户界面(UI)开发工具,用于创建Windows桌面应用程序。在本场景中,"cef3 winform" 的结合意味着开发者利用CEF3库在WinForm应用程序中创建了一个内置的浏览器组件,让...

    兼容多个浏览器的单文件上传

    通过JavaScript设置form表单的`submit`方法,然后利用`window.setTimeout`函数模拟异步效果。在回调函数中,我们可以显示上传进度或结果。 4. **跨域问题**:如果服务端和前端不在同一个域名下,还需要处理跨域问题...

    prototype使用文档

    3. **Slider组件**:创建滑块控制,用于调整数值或选择范围,方便实现音量控制、进度条等功能。 4. **Autocompleter组件**:实现自动完成输入框,用于搜索建议或数据输入辅助。 5. **Sortable行为**:允许用户通过...

    使用jQuery ajax提交表单代码

    - 可以在服务器端添加适当的响应头,如`Access-Control-Allow-Origin`,以允许跨域请求。 5. **异步加载提示** - 在发起请求前,可以显示加载动画或进度条,提升用户体验。 - 请求完成后,记得隐藏这些提示元素...

    上传插件,与使用说明

    - 使用JavaScript模拟点击表单提交,触发文件上传。 - XMLHttpRequest对象发送HTTP请求到服务器,期间可以监听上传进度,显示给用户。 - 服务器接收到文件后进行处理,可能包括验证文件类型、大小等,然后返回...

    C# 弹出Loading遮罩层

    而在Windows Forms或WPF等桌面应用开发中,C#则提供了多种方法来创建遮罩层。 在C#中,我们可以使用WinForms或WPF来实现遮罩层。如果是WinForms应用,可以利用`Form`类创建一个新的窗体作为遮罩层,设置其透明度、...

    组态王6.52安装软件

    组态王6.52是由北京亚控科技发展有限公司开发的一款基于Windows操作系统的SCADA(Supervisory Control and Data Acquisition)软件。它允许用户通过图形化界面设计和配置工业控制系统的运行环境,包括设备连接、...

    模仿微信的多图片上传

    7. **进度条显示**:通过监听Ajax上传过程中的`progress`事件,可以获取到上传进度,更新进度条展示。 8. **跨域问题**:如果前端和后端不在同一域名下,需要处理跨域问题。这通常通过设置`Access-Control-Allow-...

    ASP.NET_2.0(C#)实现多文件上传

    - 多文件上传是通过HTML5的`&lt;input type="file" multiple&gt;`标签实现的,但在ASP.NET 2.0中,由于不支持HTML5,需要通过JavaScript或jQuery来模拟这个功能。用户可以选择多个文件后,这些文件会被封装在一个FormData...

    css3老式磁带录音机播放特效

    最后,为了增强用户体验,我们还可以利用JavaScript与CSS3结合,监听音频播放事件,动态更新播放时间、进度条和控制按钮的状态。例如,监听`timeupdate`事件来更新当前播放时间: ```javascript document....

    ProCNC

    ProCNC(Professional Computer Numerical Control)作为一种专业化的数控系统,结合了先进的计算机技术和精密的机械加工,大大提升了制造效率和精度。而CSS(Cascading Style Sheets)这一网页设计语言在数字化制造...

Global site tag (gtag.js) - Google Analytics