-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path下载.html
153 lines (144 loc) · 4.31 KB
/
下载.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
<html>
<head>
<title></title>
<style>
#下载_所有_,#更新内容_{
border-style:solid;
border-width:1px;
margin:5px;
width:fit-content;
}
#下载_所有,#更新内容{
padding:8px;
}
#下载_所有>div{
border-style:solid;
border-width:1px;
margin:5px;
width:300px;
}
#下载_所有>div>div{
text-align:center;
}
#下载_所有>div>div>a{
padding:10px;
}
</style>
</head>
<body>
<div id='下载提示' style='display:none;'>很快将开始下载...<br/>若未下载, <a id='下载链接'>点击此处重试</a></div>
<div id='下载选项'>
<div>最新版本: <span id='版本'>--</span></div>
<div id='更新内容_'>更新内容:<div id='更新内容'>获取信息...</div></div>
<div id='下载_所有_'>下载:<div id='下载_所有'></div></div>
</div>
<script>"use strict";
var sleep=(t)=>{return new Promise(r=>{setTimeout(r,t)})};
/*
f=async()=>{
...
await sleep();
...
};
async f(){
...
await sleep();
...
}
*/
var 下载url=[];
var 下载=async(类型,单文件=false,新页=true)=>{
while(!下载url.length){
await sleep(100);
}
if(类型.length>下载url.length){
return false;
}
单文件=单文件?1:0
let 下载url_=下载url[类型];
if(单文件>下载url_.length){
return false;
}
if(新页){
history.pushState({},'title','?下载='+String(类型)+单文件);
}
let d=下载url_[单文件]
下载链接.href=d;
下载选项.style.display='none';
下载提示.style.display='block';
location.replace(d);
};
var 加载=()=>{
let a=location.search.substring(1).split("&");
let s={};
if(!(a.length==1&&a[0]=='')){
for (let i=0;i<a.length;i++){
let as_=a[i].split("=");
s[decodeURIComponent(as_[0])]=decodeURIComponent(as_[1]);
}
}
if(s.下载&&s.下载.length==2){
let 下载_=[parseInt(s.下载[0]),parseInt(s.下载[1])]
if(下载_[0]!==NaN&&下载_[1]!==NaN){
下载选项.style.display='none';
下载(下载_[0],下载_[1])
}else{
下载选项.style.display='block';
下载提示.style.display='none';
}
}else{
下载选项.style.display='block';
下载提示.style.display='none';
}
}
加载();
window.addEventListener('popstate', (event) => {
加载();
console.log("location: " + document.location + ", state: " + JSON.stringify(event.state));
});
var 类型=['源码(.py)','Windows(.exe)','Linux(ELF)']
for(let i=0;i<类型.length;i++){
let 下载_单项=document.createElement('div');
下载_单项.style.display='none';
下载_单项.innerText=类型[i]+':';
let 下载_单项_=document.createElement('div');
下载_单项.appendChild(下载_单项_)
类型[i]=[下载_单项,下载_单项_];
下载_所有.appendChild(下载_单项);
}
var xhr=new XMLHttpRequest();
xhr.responseType='json';
xhr.onreadystatechange=()=>{
if(xhr.readyState==4){
if (xhr.status==200){
let tj=xhr.response;
版本.innerText=tj['版本'];
更新内容.innerText=tj['更新内容'];
下载url=tj['url']
for(let i=0;i<tj['url'].length;i++){
let 类i=类型[i][1];
let tui=tj['url'][i];
if(tui.length){
类型[i][0].style.display='block';
let 下载_单项_目录=document.createElement('a');
下载_单项_目录.innerText='目录';
下载_单项_目录.onclick=()=>{下载(i,0)};
下载_单项_目录.href='javascript:void(0);'
类i.appendChild(下载_单项_目录)
}
if(tui.length>1){
let 下载_单项_文件=document.createElement('a');
下载_单项_文件.innerText='单文件';
下载_单项_文件.onclick=()=>{下载(i,1)};
下载_单项_文件.href='javascript:void(0);'
类i.appendChild(下载_单项_文件)
}
}
}else;
}
};
xhr.open("GET",'最新版本.json',true);
xhr.send();
</script>
</body>
</html>