/
index.html
328 lines (297 loc) · 12.9 KB
/
index.html
1
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h3>考试语音指令播放器</h3>
<p>提示:受网络环境影响,在线使用时音频播放可能延迟、卡顿甚至播放失败。<br>
下载离线版本:
<a href="https://gitee.com/nep-0/zl/releases/download/v0.2/zl.zip">Gitee(推荐)</a>
<a href="https://github.com/nep-0/zl/releases/download/v0.2/zl.zip">Github</a>
</p>
<audio id="p1">
<source src="./sound/p1.mp3" type="audio/mpeg">
</audio>
<audio id="p2">
<source src="./sound/p2.mp3" type="audio/mpeg">
</audio>
<audio id="p3">
<source src="./sound/p3.mp3" type="audio/mpeg">
</audio>
<audio id="p4">
<source src="./sound/p4.mp3" type="audio/mpeg">
</audio>
<audio id="p5">
<source src="./sound/p5.mp3" type="audio/mpeg">
</audio>
<audio id="p5w">
<source src="./sound/p5w.mp3" type="audio/mpeg">
</audio>
<audio id="p6">
<source src="./sound/p6.mp3" type="audio/mpeg">
</audio>
<audio id="p7">
<source src="./sound/p7.mp3" type="audio/mpeg">
</audio>
<audio id="listening" src="">
</audio>
<audio id="p8">
<source src="./sound/p8.mp3" type="audio/mpeg">
</audio>
<audio id="p9">
<source src="./sound/p9.mp3" type="audio/mpeg">
</audio>
<audio id="p10">
<source src="./sound/p10.mp3" type="audio/mpeg">
</audio>
<fieldset>
<legend>开始答题时间(24小时制)</legend>
<input class="field" id="start" value="15:20" type="time" onchange="calcTime()"></input><br><br>
<button class="field" onclick="setStart(2)">2分钟后</button>
<button class="field" onclick="setStart(6)">6分钟后</button>
<button class="field" onclick="setStart(12)">12分钟后</button>
<button class="field" onclick="setStart('09:00')">9:00</button>
<button class="field" onclick="setStart('14:10')">14:10</button>
<button class="field" onclick="setStart('15:00')">15:00</button>
<button class="field" onclick="setStart('15:20')">15:20</button>
<button class="field" onclick="setStart('18:20')">18:20</button><br>
</fieldset>
<br>
<fieldset>
<legend>考试时长(分钟)</legend>
<button class="field" onclick="setDuration(Number(duration.value)-10)">-10</button>
<button class="field" onclick="setDuration(Number(duration.value)-5)">-5</button>
<input class="field" id="duration" value="120" onchange="calcTime()"></input>
<button class="field" onclick="setDuration(Number(duration.value)+5)">+5</button>
<button class="field" onclick="setDuration(Number(duration.value)+10)">+10</button>
<br><br>
<button class="field" onclick="setDuration(60)">60</button>
<button class="field" onclick="setDuration(90)">90</button>
<button class="field" onclick="setDuration(120)">120</button>
<button class="field" onclick="setDuration(150)">150</button><br>
</fieldset>
<br>
<fieldset>
<legend>音频选择</legend>
<table>
<tr><td><input class="field" id="p1c" name="p1" type="checkbox">p1 - 进入考场</input></td><td id="p1t"></td></tr>
<tr><td><input class="field" id="p2c" name="p2" type="checkbox">p2 - 验证身份</input></td><td id="p2t"></td></tr>
<tr><td><input class="field" id="p3c" name="p3" type="checkbox" checked>p3 - 发答题卡</input></td><td id="p3t"></td></tr>
<tr><td><input class="field" id="p4c" name="p4" type="checkbox" checked>p4 - 核对挂钟</input></td><td id="p4t"></td></tr>
<tr><td><input class="field" id="p5c" name="p5" type="checkbox" onclick="p5wc.checked=false" checked>p5 - 开试卷袋</input></td><td id="p5t"></td></tr>
<tr><td><input class="field" id="p5wc" name="p5" type="checkbox" onclick="p5c.checked=false">p5w - 开试卷袋(外语)</input></td><td id="p5wt"></td></tr>
<tr><td><input class="field" id="p6c" name="p6" type="checkbox" checked>p6 - 发试卷</input></td><td id="p6t"></td></tr>
<tr><td><input class="field" id="p7c" name="p7" type="checkbox" checked>p7 - 开始答题</input></td><td id="p7t"></td></tr>
<tr><td><input class="field" id="listeningc" name="listening" type="checkbox" disabled>听力音频</input><input class="field" id="file" type="file" onchange="setSrc()"></input></td><td id="listeningt"></td></tr>
<tr><td><input class="field" id="p8c" name="p8" type="checkbox" checked>p8 - 剩 30 分钟</input></td><td id="p8t"></td></tr>
<tr><td><input class="field" id="p9c" name="p9" type="checkbox" checked>p9 - 剩 15 分钟</input></td><td id="p9t"></td></tr>
<tr><td><input class="field" id="p10c" name="p10" type="checkbox" checked>p10 - 停止答题</input></td><td id="p10t"></td></tr>
</table>
</fieldset>
<br>
<button class="field" onclick="launch()" id="launch">启动</button>
<script>
start=document.querySelector("#start")
duration=document.querySelector("#duration")
p1=document.querySelector("#p1") // enter
p2=document.querySelector("#p2") // id
p3=document.querySelector("#p3") // card
p4=document.querySelector("#p4") // clock
p5=document.querySelector("#p5") // reveal
p5w=document.querySelector("#p5w") // reveal
p6=document.querySelector("#p6") // paper
p7=document.querySelector("#p7") // start
listening=document.querySelector("#listening") // listening
p8=document.querySelector("#p8") // 30 min
p9=document.querySelector("#p9") // 15 min
p10=document.querySelector("#p10") // end
p1c=document.querySelector("#p1c") // enter
p2c=document.querySelector("#p2c") // id
p3c=document.querySelector("#p3c") // card
p4c=document.querySelector("#p4c") // clock
p5c=document.querySelector("#p5c") // reveal
p5wc=document.querySelector("#p5wc") // reveal
p6c=document.querySelector("#p6c") // paper
p7c=document.querySelector("#p7c") // start
listeningc=document.querySelector("#listeningc") // listening
p8c=document.querySelector("#p8c") // 30 min
p9c=document.querySelector("#p9c") // 15 min
p10c=document.querySelector("#p10c") // end
button=document.querySelector("#launch")
function setStart(a) {
if(a==2 || a==6 || a==12) {
now=new Date()
if(now.getMinutes()+a>=60) {
start.value=checkTime(String(now.getHours()+1))+":"+checkTime(String(now.getMinutes()+a-60))
} else {
start.value=checkTime(now.getHours())+":"+checkTime(String(now.getMinutes()+a))
}
calcTime()
return
}
start.value=a
calcTime()
}
function setDuration(a) {
duration.value=a
calcTime()
}
function launch() {
disableFields()
startTimer()
now=new Date()
startTime=new Date(now.getYear()+1900,now.getMonth(),now.getDate(),Number(start.value.split(":")[0]),Number(start.value.split(":")[1]))
endTime=new Date(startTime.valueOf()+Number(duration.value)*60*1000)
if(startTime.valueOf()-50*60*1000>=now.valueOf() && p1c.checked){
setTimeout(function() {
p1.currentTime=0
p1.play()
},startTime.valueOf()-50*60*1000-now.valueOf())
}
if(startTime.valueOf()-36*60*1000>=now.valueOf() && p2c.checked){
setTimeout(function() {
p2.currentTime=0
p2.play()
},startTime.valueOf()-36*60*1000-now.valueOf())
}
if(startTime.valueOf()-15*60*1000>=now.valueOf() && p3c.checked){
setTimeout(function() {
p3.currentTime=0
p3.play()
},startTime.valueOf()-15*60*1000-now.valueOf())
}
if(startTime.valueOf()-11*60*1000>=now.valueOf() && p4c.checked){
setTimeout(function() {
p4.currentTime=0
p4.play()
},startTime.valueOf()-11*60*1000-now.valueOf())
}
if(startTime.valueOf()-10*60*1000>=now.valueOf() && p5c.checked){
setTimeout(function() {
p5.currentTime=0
p5.play()
},startTime.valueOf()-10*60*1000-now.valueOf())
}
if(startTime.valueOf()-10*60*1000>=now.valueOf() && p5wc.checked){
setTimeout(function() {
p5w.currentTime=0
p5w.play()
},startTime.valueOf()-10*60*1000-now.valueOf())
}
if(startTime.valueOf()-5*60*1000>=now.valueOf() && p6c.checked){
setTimeout(function() {
p6.currentTime=0
p6.play()
},startTime.valueOf()-5*60*1000-now.valueOf())
}
if(startTime.valueOf()>=now.valueOf() && p7c.checked){
setTimeout(function() {
p7.currentTime=0
p7.play()
},startTime.valueOf()-now.valueOf())
}
if(startTime.valueOf()+60*1000>=now.valueOf() && listeningc.checked){
setTimeout(function() {
listening.currentTime=0
listening.play()
},startTime.valueOf()+60*1000-now.valueOf())
}
if(endTime.valueOf()-30*60*1000>=now.valueOf() && p8c.checked){
setTimeout(function() {
p8.currentTime=0
p8.play()
},endTime.valueOf()-30*60*1000-now.valueOf())
}
if(endTime.valueOf()-15*60*1000>=now.valueOf() && p9c.checked){
setTimeout(function() {
p9.currentTime=0
p9.play()
},endTime.valueOf()-15*60*1000-now.valueOf())
}
if(endTime.valueOf()>=now.valueOf() && p10c.checked){
setTimeout(function() {
p10.currentTime=0
p10.play()
},endTime.valueOf()-now.valueOf())
}
}
function startTimer(){
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m=checkTime(m);
s=checkTime(s);
button.innerHTML="运行中 当前时间 "+h+":"+m+":"+s;
t=setTimeout(function(){startTimer()},500);
}
function checkTime(i){
if (i<10){
i="0" + i;
}
return i;
}
function calcTime() {
now=new Date()
startTime=new Date(now.getYear()+1900,now.getMonth(),now.getDate(),Number(start.value.split(":")[0]),Number(start.value.split(":")[1]))
endTime=new Date(startTime.valueOf()+Number(duration.value)*60*1000)
p1t=document.querySelector("#p1t") // enter
p2t=document.querySelector("#p2t") // id
p3t=document.querySelector("#p3t") // card
p4t=document.querySelector("#p4t") // clock
p5t=document.querySelector("#p5t") // reveal
p5wt=document.querySelector("#p5wt") // reveal
p6t=document.querySelector("#p6t") // paper
p7t=document.querySelector("#p7t") // start
listeningt=document.querySelector("#listeningt") // listening
p8t=document.querySelector("#p8t") // 30 min
p9t=document.querySelector("#p9t") // 15 min
p10t=document.querySelector("#p10t") // end
p1time = new Date(startTime.valueOf()-50*60*1000)
p2time = new Date(startTime.valueOf()-36*60*1000)
p3time = new Date(startTime.valueOf()-15*60*1000)
p4time = new Date(startTime.valueOf()-11*60*1000)
p5time = new Date(startTime.valueOf()-10*60*1000)
p5wtime = new Date(startTime.valueOf()-10*60*1000)
p6time = new Date(startTime.valueOf()-5*60*1000)
p7time = new Date(startTime.valueOf())
listeningtime = new Date(startTime.valueOf()+60*1000)
p8time = new Date(endTime.valueOf()-30*60*1000)
p9time = new Date(endTime.valueOf()-15*60*1000)
p10time = new Date(endTime.valueOf())
p1t.innerHTML=p1time.toLocaleTimeString()
p2t.innerHTML=p2time.toLocaleTimeString()
p3t.innerHTML=p3time.toLocaleTimeString()
p4t.innerHTML=p4time.toLocaleTimeString()
p5t.innerHTML=p5time.toLocaleTimeString()
p5wt.innerHTML=p5wtime.toLocaleTimeString()
p6t.innerHTML=p6time.toLocaleTimeString()
p7t.innerHTML=p7time.toLocaleTimeString()
listeningt.innerHTML=listeningtime.toLocaleTimeString()
p8t.innerHTML=p8time.toLocaleTimeString()
p9t.innerHTML=p9time.toLocaleTimeString()
p10t.innerHTML=p10time.toLocaleTimeString()
}
function disableFields() {
fields=document.querySelectorAll(".field")
for(i=0;i<fields.length;i++) {
fields[i].disabled=true
}
}
function setSrc() {
listening=document.querySelector("#listening")
file=document.querySelector("#file").files[0]
url=URL.createObjectURL(file)
listeningc=document.querySelector("#listeningc")
listening.src=url
listeningc.checked=true
listeningc.disabled=false
}
calcTime()
uploader=document.querySelector("#file")
uploader.outerHTML=uploader.outerHTML
listeningc=document.querySelector("#listeningc")
listeningc.checked=false
</script>
</body>
</html>