1
var ProgressIndicator = {
2
isShow : false,
3
height : 100,
4
width : 300,
5
target : self,
6
spinner : "../images/spinner.gif",
7
show : function(width,height,target)
8
{
9
if(this.isShow==false)
10
{
11
if(arguments.length >= 2)
12
{
13
this.width = width;
14
this.height = height;
15
if(arguments.length>2)
16
this.target = target;
17
}
18
var size = this.getMaskSize();
19
this.target.document.body.insertAdjacentHTML("beforeEnd","<div id=\"maskskin\" style=\"position:absolute;left:0px;top:0px;background-color:#333333;opacity: .4;filter: alpha(opacity=40);z-index:1000;width:"+size.width+"px;height:"+size.height+"px;\"></div>");
20
var position = this.getCenterPosition();
21
this.target.document.body.insertAdjacentHTML("beforeEnd","<IFRAME name=\"masklayer\" style=\"border:1px solid buttontext;position:absolute;z-index:1001;left:"+position.left+"px;top:"+position.top+"px;\" frameborder=0 width=\""+this.width+"\" height=\""+this.height+"\" src=\"about:blank\"/>");
22
var frameDoc = this.target.document.frames["masklayer"].document;
23
frameDoc.open();
24
frameDoc.write("<table width=\"100%\" height=\"100%\"><tr><td><img src=\""+this.spinner+"\"></td><td style=\"color:black;font-size:10pt;\"><b>Waiting
</b></td></tr><tr><td></td><td style=\"color:black;font-size:10pt;\">Be patient,processing
</td></tr></table>");
25
frameDoc.close();
26
this.isShow = true;
27
this.addEvent(this.target, "resize", ProgressIndicator.centerProgressBar);
28
this.addEvent(this.target, "scroll", ProgressIndicator.centerProgressBar);
29
}
30
//window.onscroll = this.centerProgressBar;
31
},
32
hide : function()
33
{
34
var maskFrame = this.target.document.getElementById("masklayer");
35
maskFrame.parentNode.removeChild(maskFrame);
36
var maskSkin = this.target.document.getElementById("maskskin");
37
maskSkin.parentNode.removeChild(maskSkin);
38
this.isShow = false;
39
this.removeEvent(this.target, "resize", ProgressIndicator.centerProgressBar);
40
this.removeEvent(this.target, "scroll", ProgressIndicator.centerProgressBar);
41
},
42
updateMessage : function(msg)
43
{
44
if(this.isShow)
45
{
46
var table = this.target.document.frames["masklayer"].document.getElementsByTagName("TABLE")[0];
47
table.rows[1].cells[1].innerHTML = msg;
48
}
49
},
50
addEvent : function(obj, evType, fn){
51
if (obj.addEventListener){
52
obj.addEventListener(evType, fn, false);
53
return true;
54
} else if (obj.attachEvent){
55
var r = obj.attachEvent("on"+evType, fn);
56
return r;
57
} else {
58
return false;
59
}
60
},
61
removeEvent : function(obj, evType, fn, useCapture){
62
if (obj.removeEventListener){
63
obj.removeEventListener(evType, fn, useCapture);
64
return true;
65
} else if (obj.detachEvent){
66
var r = obj.detachEvent("on"+evType, fn);
67
return r;
68
} else {
69
alert("Handler could not be removed");
70
}
71
},
72
getViewportHeight : function() {
73
if (this.target.innerHeight!=this.target.undefined) return this.target.innerHeight;
74
if (this.target.document.compatMode=='CSS1Compat') return this.target.document.documentElement.clientHeight;
75
if (this.target.document.body) return this.target.document.body.clientHeight;
76
77
return this.target.undefined;
78
},
79
getViewportWidth : function(){
80
var offset = 17;
81
var width = null;
82
if (this.target.innerWidth!=this.target.undefined) return this.target.innerWidth;
83
if (this.target.document.compatMode=='CSS1Compat') return this.target.document.documentElement.clientWidth;
84
if (this.target.document.body) return this.target.document.body.clientWidth;
85
},
86
getScrollTop : function(){
87
if (self.pageYOffset) // all except Explorer
88
{
89
return self.pageYOffset;
90
}
91
else if (this.target.document.documentElement && this.target.document.documentElement.scrollTop)
92
// Explorer 6 Strict
93
{
94
return this.target.document.documentElement.scrollTop;
95
}
96
else if (this.target.document.body) // all other Explorers
97
{
98
return this.target.document.body.scrollTop;
99
}
100
},
101
getScrollLeft : function(){
102
if (self.pageXOffset) // all except Explorer
103
{
104
return self.pageXOffset;
105
}
106
else if (this.target.document.documentElement && this.target.document.documentElement.scrollLeft)
107
// Explorer 6 Strict
108
{
109
return this.target.document.documentElement.scrollLeft;
110
}
111
else if (this.target.document.body) // all other Explorers
112
{
113
return this.target.document.body.scrollLeft;
114
}
115
},
116
getMaskSize : function()
117
{
118
var theBody = this.target.document.getElementsByTagName("BODY")[0];
119
120
var fullHeight = this.getViewportHeight();
121
var fullWidth = this.getViewportWidth();
122
123
// Determine what's bigger, scrollHeight or fullHeight / width
124
if (fullHeight > theBody.scrollHeight) {
125
popHeight = fullHeight;
126
} else {
127
popHeight = theBody.scrollHeight;
128
}
129
130
if (fullWidth > theBody.scrollWidth) {
131
popWidth = fullWidth;
132
} else {
133
popWidth = theBody.scrollWidth;
134
}
135
136
return {width:popWidth,height:popHeight+this.height};
137
},
138
getCenterPosition : function()
139
{
140
//var theBody = document.documentElement;
141
var theBody = this.target.document.getElementsByTagName("BODY")[0];
142
//theBody.style.overflow = "hidden";
143
var scTop = parseInt(this.getScrollTop(),10);
144
var scLeft = parseInt(theBody.scrollLeft,10);
145
146
var fullHeight = this.getViewportHeight();
147
var fullWidth = this.getViewportWidth();
148
149
var top = scTop + ((fullHeight - this.height) / 2);
150
var left = scLeft + ((fullWidth - this.width) / 2);
151
152
return {top:top,left:left};
153
},
154
centerProgressBar : function()
155
{
156
if(ProgressIndicator.isShow)
157
{
158
var position = ProgressIndicator.getCenterPosition();
159
var maskdiv = ProgressIndicator.target.document.getElementsByName("masklayer")[0];
160
maskdiv.style.top = position.top + "px";
161
maskdiv.style.left = position.left + "px";
162
}
163
}
164
};
var ProgressIndicator = {2
isShow : false,3
height : 100,4
width : 300,5
target : self,6
spinner : "../images/spinner.gif",7
show : function(width,height,target)8
{9
if(this.isShow==false)10
{11
if(arguments.length >= 2)12
{13
this.width = width;14
this.height = height;15
if(arguments.length>2)16
this.target = target;17
}18
var size = this.getMaskSize();19
this.target.document.body.insertAdjacentHTML("beforeEnd","<div id=\"maskskin\" style=\"position:absolute;left:0px;top:0px;background-color:#333333;opacity: .4;filter: alpha(opacity=40);z-index:1000;width:"+size.width+"px;height:"+size.height+"px;\"></div>");20
var position = this.getCenterPosition();21
this.target.document.body.insertAdjacentHTML("beforeEnd","<IFRAME name=\"masklayer\" style=\"border:1px solid buttontext;position:absolute;z-index:1001;left:"+position.left+"px;top:"+position.top+"px;\" frameborder=0 width=\""+this.width+"\" height=\""+this.height+"\" src=\"about:blank\"/>");22
var frameDoc = this.target.document.frames["masklayer"].document;23
frameDoc.open();24
frameDoc.write("<table width=\"100%\" height=\"100%\"><tr><td><img src=\""+this.spinner+"\"></td><td style=\"color:black;font-size:10pt;\"><b>Waiting
</b></td></tr><tr><td></td><td style=\"color:black;font-size:10pt;\">Be patient,processing
</td></tr></table>");25
frameDoc.close(); 26
this.isShow = true;27
this.addEvent(this.target, "resize", ProgressIndicator.centerProgressBar); 28
this.addEvent(this.target, "scroll", ProgressIndicator.centerProgressBar);29
}30
//window.onscroll = this.centerProgressBar;31
},32
hide : function()33
{34
var maskFrame = this.target.document.getElementById("masklayer");35
maskFrame.parentNode.removeChild(maskFrame);36
var maskSkin = this.target.document.getElementById("maskskin");37
maskSkin.parentNode.removeChild(maskSkin);38
this.isShow = false;39
this.removeEvent(this.target, "resize", ProgressIndicator.centerProgressBar); 40
this.removeEvent(this.target, "scroll", ProgressIndicator.centerProgressBar);41
},42
updateMessage : function(msg)43
{44
if(this.isShow)45
{46
var table = this.target.document.frames["masklayer"].document.getElementsByTagName("TABLE")[0];47
table.rows[1].cells[1].innerHTML = msg;48
}49
},50
addEvent : function(obj, evType, fn){51
if (obj.addEventListener){52
obj.addEventListener(evType, fn, false);53
return true;54
} else if (obj.attachEvent){55
var r = obj.attachEvent("on"+evType, fn);56
return r;57
} else {58
return false;59
}60
},61
removeEvent : function(obj, evType, fn, useCapture){62
if (obj.removeEventListener){63
obj.removeEventListener(evType, fn, useCapture);64
return true;65
} else if (obj.detachEvent){66
var r = obj.detachEvent("on"+evType, fn);67
return r;68
} else {69
alert("Handler could not be removed");70
}71
},72
getViewportHeight : function() {73
if (this.target.innerHeight!=this.target.undefined) return this.target.innerHeight;74
if (this.target.document.compatMode=='CSS1Compat') return this.target.document.documentElement.clientHeight;75
if (this.target.document.body) return this.target.document.body.clientHeight; 76

77
return this.target.undefined; 78
},79
getViewportWidth : function(){80
var offset = 17;81
var width = null;82
if (this.target.innerWidth!=this.target.undefined) return this.target.innerWidth; 83
if (this.target.document.compatMode=='CSS1Compat') return this.target.document.documentElement.clientWidth; 84
if (this.target.document.body) return this.target.document.body.clientWidth; 85
},86
getScrollTop : function(){87
if (self.pageYOffset) // all except Explorer88
{89
return self.pageYOffset;90
}91
else if (this.target.document.documentElement && this.target.document.documentElement.scrollTop)92
// Explorer 6 Strict93
{94
return this.target.document.documentElement.scrollTop;95
}96
else if (this.target.document.body) // all other Explorers97
{98
return this.target.document.body.scrollTop;99
}100
},101
getScrollLeft : function(){102
if (self.pageXOffset) // all except Explorer103
{104
return self.pageXOffset;105
}106
else if (this.target.document.documentElement && this.target.document.documentElement.scrollLeft)107
// Explorer 6 Strict108
{109
return this.target.document.documentElement.scrollLeft;110
}111
else if (this.target.document.body) // all other Explorers112
{113
return this.target.document.body.scrollLeft;114
}115
},116
getMaskSize : function()117
{ 118
var theBody = this.target.document.getElementsByTagName("BODY")[0];119
120
var fullHeight = this.getViewportHeight();121
var fullWidth = this.getViewportWidth();122
123
// Determine what's bigger, scrollHeight or fullHeight / width124
if (fullHeight > theBody.scrollHeight) {125
popHeight = fullHeight;126
} else {127
popHeight = theBody.scrollHeight;128
}129
130
if (fullWidth > theBody.scrollWidth) {131
popWidth = fullWidth;132
} else {133
popWidth = theBody.scrollWidth;134
}135
136
return {width:popWidth,height:popHeight+this.height};137
},138
getCenterPosition : function()139
{140
//var theBody = document.documentElement;141
var theBody = this.target.document.getElementsByTagName("BODY")[0];142
//theBody.style.overflow = "hidden";143
var scTop = parseInt(this.getScrollTop(),10);144
var scLeft = parseInt(theBody.scrollLeft,10);145
146
var fullHeight = this.getViewportHeight();147
var fullWidth = this.getViewportWidth();148
149
var top = scTop + ((fullHeight - this.height) / 2);150
var left = scLeft + ((fullWidth - this.width) / 2);151
152
return {top:top,left:left};153
},154
centerProgressBar : function()155
{156
if(ProgressIndicator.isShow)157
{158
var position = ProgressIndicator.getCenterPosition();159
var maskdiv = ProgressIndicator.target.document.getElementsByName("masklayer")[0];160
maskdiv.style.top = position.top + "px";161
maskdiv.style.left = position.left + "px";162
}163
} 164
}; 1
<html>
2
<head>
3
<title>ProgressIndicator Demo</title>
4
<script language="javascript" type="text/javascript" src="ProgressIndicator.js"></script>
5
<script language="javascript" type="text/javascript">
6
<!--
7
8
ProgressIndicator.spinner = "spinner.gif";
9
10
//-->
11
</script>
12
</head>
13
<body>
14
<h2>ProgressIndicator Demo</h2>
15
<hr/>
16
<input type="button" value="Show ProgressIndicator
" onclick="ProgressIndicator.show()"><br/><br/>
17
<input type="button" value="Show ProgressIndicator
[400,150]" onclick="ProgressIndicator.show(400,150,top)">
18
</body>
19
</html>
<html>2
<head>3
<title>ProgressIndicator Demo</title>4
<script language="javascript" type="text/javascript" src="ProgressIndicator.js"></script>5
<script language="javascript" type="text/javascript">6
<!--7

8
ProgressIndicator.spinner = "spinner.gif";9

10
//-->11
</script>12
</head>13
<body>14
<h2>ProgressIndicator Demo</h2>15
<hr/>16
<input type="button" value="Show ProgressIndicator
" onclick="ProgressIndicator.show()"><br/><br/>17
<input type="button" value="Show ProgressIndicator
[400,150]" onclick="ProgressIndicator.show(400,150,top)">18
</body>19
</html>仅在IE6中测试过
附件下载


浙公网安备 33010602011771号