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
};

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24



25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

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>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


17


18

19

仅在IE6中测试过
附件下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
2005-04-03 AspnetUpload 2.1 release