Javascript - 加载/忙碌指示符或事件点击页面上的透明div [英] Javascript - loading/busy indicator or transparent div over page on event click

查看:106
本文介绍了Javascript - 加载/忙碌指示符或事件点击页面上的透明div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个客户端JavaScript函数,它是在按钮点击触发(基本上,它的计算器!)。有时,由于页面上的巨大数据,javascript计算器功能需要长,使该页面对用户显示为不活动。我计划在整个页面上显示一个透明的div,也许使用一个繁忙的指示符(在中心),直到计算器功能结束,以便用户等待,直到进程结束。

 
function CalculateAmountOnClick()
{
//显示透明div

MY耗时的循环!
{

}

//删除透明div

}

有关如何解决这个问题的任何想法?当我的计算器函数启动时,是否应该使用javascript将css类分配给一个div(包围我的整个页面的内容)?我试过,但没有得到所需的结果。



TIA



  function CalculateAmountOnClick() {
var curtain = document.body.appendChild(document.createElement('div'));
curtain.id =curtain;
curtain.onkeypress = curtain.onclick = function(){return false; }
try {
//你的操作
}
finally {
curtain.parentNode.removeChild(curtain);
}
}

您的CSS:

  #curtain {
position:fixed;
_position:absolute;
z-index:99;
left:0;
top:0;
width:100%;
height:100%;
_height:expression(document.body.offsetHeight +px);
background:url(curtain.png);
_background:url(curtain.gif);
}

(根据需要将MSIE 6下划线黑客移动到有条件包含的文件) p>

您可以将其设置为窗帘的添加/删除功能,或作为包装器:

  function modalProcess(callback){
var ret;
var curtain = document.body.appendChild(document.createElement('div'));
curtain.id =curtain;
curtain.onkeypress = curtain.onclick = function(){return false; }
try {
ret = callback();
}
finally {
curtain.parentNode.removeChild(curtain);
}
return ret;
}

那么你可以这样调用:

  var result = modalProcess(function(){
//你的操作在这里
});


i got a client side javascript function which is triggered on a button click (basically, its a calculator!!). Sometimes, due to enormous data on the page, the javascript calculator function take to long & makes the page appear inactive to the user. I was planning to display a transparent div over entire page, maybe with a busy indicator (in the center) till the calculator function ends, so that user waits till process ends.

function CalculateAmountOnClick()
{
  // Display transparent div

  // MY time consuming loop!
    {

    }

  // Remove transparent div 

}

Any ideas on how to go about this? Should i assign a css class to a div (which surrounds my entire page's content) using javascript when my calculator function starts? I tried that but didnt get desired results. Was facing issues with transparency in IE 6. Also how will i show a loading message + image in such a transparent div?

TIA

解决方案

Javacript to show a curtain:

function CalculateAmountOnClick () {
  var curtain = document.body.appendChild( document.createElement('div') );
  curtain.id = "curtain";
  curtain.onkeypress = curtain.onclick = function(){ return false; }
  try {
    // your operations
  }
  finally {
    curtain.parentNode.removeChild( curtain );
  }
}

Your CSS:

#curtain {
  position: fixed;
  _position: absolute;
  z-index: 99;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  _height: expression(document.body.offsetHeight + "px");
  background: url(curtain.png);
  _background: url(curtain.gif);
}

(Move MSIE 6 underscore hacks to conditionally included files as desired.)

You could set this up as add/remove functions for the curtain, or as a wrapper:

function modalProcess( callback ) {
  var ret;
  var curtain = document.body.appendChild( document.createElement('div') );
  curtain.id = "curtain";
  curtain.onkeypress = curtain.onclick = function(){ return false; }
  try {
    ret = callback();
  }
  finally {
    curtain.parentNode.removeChild( curtain );
  }
  return ret;
}

Which you could then call like this:

var result = modalProcess(function(){
  // your operations here
});

这篇关于Javascript - 加载/忙碌指示符或事件点击页面上的透明div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆