Последняя активность 2 months ago

qxzhan's Avatar qxzhan ревизий этого фрагмента 2 months ago. К ревизии

1 file changed, 578 insertions

js(файл создан)

@@ -0,0 +1,578 @@
1 + // 进行 fetch 请求
2 + fetch('https://api.nsmao.net/api/ip/query?key=你的API密钥,从https://api.nsmao.net申请')
3 + .then(response => {
4 + if (!response.ok) {
5 + throw new Error('Network response was not ok');
6 + }
7 + return response.json();
8 + })
9 + .then(data => {
10 + ipLocation = data;
11 + if (isHomePage()) {
12 + showWelcome();
13 + }
14 + })
15 + .catch(error => console.error('Error:', error));
16 +
17 + function getDistance(e1, n1, e2, n2) {
18 + const R = 6371;
19 + const { sin, cos, asin, PI, hypot } = Math;
20 + let getPoint = (e, n) => {
21 + e *= PI / 180;
22 + n *= PI / 180;
23 + return { x: cos(n) * cos(e), y: cos(n) * sin(e), z: sin(n) };
24 + };
25 +
26 + let a = getPoint(e1, n1);
27 + let b = getPoint(e2, n2);
28 + let c = hypot(a.x - b.x, a.y - b.y, a.z - b.z);
29 + let r = asin(c / 2) * 2 * R;
30 + return Math.round(r);
31 + }
32 +
33 + function showWelcome() {
34 + if (!ipLocation || !ipLocation.data) {
35 + console.error('ipLocation data is not available.');
36 + return;
37 + }
38 +
39 + let dist = getDistance(120.3074357, 31.4933074, ipLocation.data.lng, ipLocation.data.lat);
40 + let pos = ipLocation.data.country;
41 + let ip = ipLocation.ip;
42 + let posdesc;
43 +
44 + // 新增ipv6显示为指定内容
45 + if (ip.includes(":")) {
46 + ip = "<br>好复杂,咱看不懂~(ipv6)";
47 + }
48 +
49 + // 以下的代码需要根据新API返回的结果进行相应的调整
50 + switch (ipLocation.data.country) {
51 + case "日本":
52 + posdesc = "よろしく,一起去看樱花吗";
53 + break;
54 + case "美国":
55 + posdesc = "Let us live in peace!";
56 + break;
57 + case "英国":
58 + posdesc = "想同你一起夜乘伦敦眼";
59 + break;
60 + case "俄罗斯":
61 + posdesc = "干了这瓶伏特加!";
62 + break;
63 + case "法国":
64 + posdesc = "C'est La Vie";
65 + break;
66 + case "德国":
67 + posdesc = "Die Zeit verging im Fluge.";
68 + break;
69 + case "澳大利亚":
70 + posdesc = "一起去大堡礁吧!";
71 + break;
72 + case "加拿大":
73 + posdesc = "拾起一片枫叶赠予你";
74 + break;
75 + case "中国":
76 + pos = ipLocation.data.prov + " " + ipLocation.data.city + " " + ipLocation.data.district;
77 + switch (ipLocation.data.prov) {
78 + case "北京":
79 + posdesc = "北——京——欢迎你~~~";
80 + break;
81 + case "上海":
82 + posdesc = "走在外滩,感受历史与现代的交融。";
83 + break;
84 + case "广东":
85 + switch (ipLocation.data.city) {
86 + case "广州":
87 + posdesc = "看小蛮腰,喝早茶了嘛~";
88 + break;
89 + case "深圳":
90 + posdesc = "今天你逛商场了嘛~";
91 + break;
92 + case "珠海":
93 + posdesc = "浪漫之城珠海,海风轻拂。";
94 + break;
95 + case "东莞":
96 + posdesc = "东莞,制造业之都,经济活跃。";
97 + break;
98 + case "佛山":
99 + posdesc = "佛山,武术之乡,陶瓷文化深厚。";
100 + break;
101 + default:
102 + posdesc = "带你感受广东的热情与美食!";
103 + break;
104 + }
105 + break;
106 + case "浙江":
107 + switch (ipLocation.data.city) {
108 + case "杭州":
109 + posdesc = "西湖美景,三月天~";
110 + break;
111 + case "宁波":
112 + posdesc = "来宁波,感受大海的气息。";
113 + break;
114 + case "温州":
115 + posdesc = "温州人杰地灵,商贸繁荣。";
116 + break;
117 + case "绍兴":
118 + posdesc = "绍兴,酒乡文化,古韵悠长。";
119 + break;
120 + case "湖州":
121 + posdesc = "湖州,太湖之滨,风景如画。";
122 + break;
123 + default:
124 + posdesc = "这里是浙江,充满江南的韵味!";
125 + break;
126 + }
127 + break;
128 + case "四川":
129 + switch (ipLocation.data.city) {
130 + case "成都":
131 + posdesc = "宽窄巷子,成都慢生活。";
132 + break;
133 + case "绵阳":
134 + posdesc = "享受科技城的宁静与创新。";
135 + break;
136 + case "自贡":
137 + posdesc = "自贡的盐文化与灯会,独具魅力。";
138 + break;
139 + case "德阳":
140 + posdesc = "德阳,历史悠久,文化底蕴深厚。";
141 + break;
142 + case "乐山":
143 + posdesc = "乐山大佛,世界文化遗产。";
144 + break;
145 + default:
146 + posdesc = "来四川,品麻辣火锅,赏壮丽山河。";
147 + break;
148 + }
149 + break;
150 + case "福建":
151 + switch (ipLocation.data.city) {
152 + case "厦门":
153 + posdesc = "鼓浪屿听海,厦门美食让人流连忘返。";
154 + break;
155 + case "福州":
156 + posdesc = "有福之州,来此感受千年古城。";
157 + break;
158 + case "泉州":
159 + posdesc = "泉州,海上丝绸之路的起点。";
160 + break;
161 + case "漳州":
162 + posdesc = "漳州,古城文化与美食的结合。";
163 + break;
164 + case "南平":
165 + posdesc = "南平,武夷山的自然风光。";
166 + break;
167 + default:
168 + posdesc = "福建山水如画,美景无处不在。";
169 + break;
170 + }
171 + break;
172 + case "山东":
173 + switch (ipLocation.data.city) {
174 + case "青岛":
175 + posdesc = "来青岛喝啤酒,看大海吧!";
176 + break;
177 + case "济南":
178 + posdesc = "泉城济南,四面荷花三面柳。";
179 + break;
180 + case "烟台":
181 + posdesc = "烟台的葡萄酒与海鲜,令人陶醉。";
182 + break;
183 + case "潍坊":
184 + posdesc = "潍坊,风筝之都,文化底蕴深厚。";
185 + break;
186 + case "德州":
187 + posdesc = "德州,扒鸡闻名,文化悠久。";
188 + break;
189 + default:
190 + posdesc = "山东好客,欢迎来感受齐鲁文化!";
191 + break;
192 + }
193 + break;
194 + case "江苏":
195 + switch (ipLocation.data.city) {
196 + case "南京":
197 + posdesc = "六朝古都南京,历史与现代的碰撞。";
198 + break;
199 + case "苏州":
200 + posdesc = "来苏州,感受园林之美。";
201 + break;
202 + case "无锡":
203 + posdesc = "无锡太湖美景,灵山大佛令人心旷神怡。";
204 + break;
205 + case "常州":
206 + posdesc = "常州,文化与科技的交汇点。";
207 + break;
208 + case "南通":
209 + posdesc = "南通,海门潮涌,文化底蕴深厚。";
210 + break;
211 + default:
212 + posdesc = "水乡泽国,江南佳丽地。";
213 + break;
214 + }
215 + break;
216 + case "河北":
217 + posdesc = "燕赵大地,英雄辈出的河北,等你探索!";
218 + break;
219 + case "河南":
220 + switch (ipLocation.data.city) {
221 + case "郑州":
222 + posdesc = "中原大地,郑州是交通枢纽与历史重镇。";
223 + break;
224 + case "洛阳":
225 + posdesc = "千年古都洛阳,牡丹花开的城。";
226 + break;
227 + case "开封":
228 + posdesc = "开封,古都文化与美食的汇聚地。";
229 + break;
230 + case "新乡":
231 + posdesc = "新乡,历史悠久,文化底蕴深厚。";
232 + break;
233 + case "焦作":
234 + posdesc = "焦作,云台山的自然风光。";
235 + break;
236 + default:
237 + posdesc = "这里是河南,历史悠久文化灿烂。";
238 + break;
239 + }
240 + break;
241 + case "湖南":
242 + switch (ipLocation.data.city) {
243 + case "长沙":
244 + posdesc = "热辣长沙,吃小龙虾逛黄兴路步行街。";
245 + break;
246 + case "岳阳":
247 + posdesc = "岳阳楼,洞庭湖的美景尽收眼底。";
248 + break;
249 + case "株洲":
250 + posdesc = "株洲,火车制造业的发源地。";
251 + break;
252 + case "湘潭":
253 + posdesc = "湘潭,伟人故里,文化底蕴深厚。";
254 + break;
255 + default:
256 + posdesc = "湖南,烟雨迷蒙的湘江流过这片土地。";
257 + break;
258 + }
259 + break;
260 + case "湖北":
261 + switch (ipLocation.data.city) {
262 + case "武汉":
263 + posdesc = "来大武汉,过长江大桥,吃热干面!";
264 + break;
265 + case "宜昌":
266 + posdesc = "三峡大坝,壮丽的自然奇观。";
267 + break;
268 + case "荆州":
269 + posdesc = "荆州,历史文化名城,古韵悠长。";
270 + break;
271 + case "襄阳":
272 + posdesc = "襄阳,古城文化与美食的结合。";
273 + break;
274 + default:
275 + posdesc = "湖北,长江中游的明珠,风景秀丽。";
276 + break;
277 + }
278 + break;
279 + case "安徽":
280 + switch (ipLocation.data.city) {
281 + case "合肥":
282 + posdesc = "创新之城合肥,科教文化汇聚地。";
283 + break;
284 + case "黄山":
285 + posdesc = "黄山,天下第一奇山,风景如画。";
286 + break;
287 + case "芜湖":
288 + posdesc = "芜湖,长江之畔,文化底蕴深厚。";
289 + break;
290 + case "马鞍山":
291 + posdesc = "马鞍山,文化与自然的完美结合。";
292 + break;
293 + default:
294 + posdesc = "安徽山水,黄山、九华山欢迎你。";
295 + break;
296 + }
297 + break;
298 + case "广西":
299 + switch (ipLocation.data.city) {
300 + case "桂林":
301 + posdesc = "桂林山水甲天下,风景如画。";
302 + break;
303 + case "南宁":
304 + posdesc = "绿城南宁,宜居宜游。";
305 + break;
306 + case "柳州":
307 + posdesc = "柳州的螺蛳粉,独具风味。";
308 + break;
309 + case "防城港":
310 + posdesc = "防城港,海洋资源丰富,风景迷人。";
311 + break;
312 + default:
313 + posdesc = "广西山清水秀,民俗风情浓郁。";
314 + break;
315 + }
316 + break;
317 + case "贵州":
318 + switch (ipLocation.data.city) {
319 + case "贵阳":
320 + posdesc = "贵阳,山城之美,民族风情浓郁。";
321 + break;
322 + case "遵义":
323 + posdesc = "遵义,红色之城,历史悠久。";
324 + break;
325 + case "安顺":
326 + posdesc = "安顺,黄果树瀑布的故乡,风景如画。";
327 + break;
328 + case "毕节":
329 + posdesc = "毕节,拥有丰富的自然资源与人文景观。";
330 + break;
331 + case "六盘水":
332 + posdesc = "六盘水,凉爽的夏天,避暑胜地。";
333 + break;
334 + case "铜仁":
335 + posdesc = "铜仁,秀美的山水与独特的民族文化。";
336 + break;
337 + case "凯里":
338 + posdesc = "凯里,苗族文化的发源地,风情独特。";
339 + break;
340 + default:
341 + posdesc = "来贵州,品茅台,赏黄果树瀑布。";
342 + break;
343 + }
344 + break;
345 + case "云南":
346 + switch (ipLocation.data.city) {
347 + case "昆明":
348 + posdesc = "春城昆明,四季如春,风景秀丽。";
349 + break;
350 + case "大理":
351 + posdesc = "苍山洱海,大理古城,你来了就不想走。";
352 + break;
353 + case "丽江":
354 + posdesc = "丽江古城,纳西文化的瑰宝。";
355 + break;
356 + case "西双版纳":
357 + posdesc = "西双版纳,热带雨林的奇妙之地。";
358 + break;
359 + default:
360 + posdesc = "云南风景独特,风情万种。";
361 + break;
362 + }
363 + break;
364 + case "西藏":
365 + switch (ipLocation.data.city) {
366 + case "拉萨":
367 + posdesc = "拉萨,西藏的首府,布达拉宫的故乡。";
368 + break;
369 + case "日喀则":
370 + posdesc = "日喀则,历史悠久的文化名城。";
371 + break;
372 + case "林芝":
373 + posdesc = "林芝,素有'西藏江南'之称,风景如画。";
374 + break;
375 + case "昌都":
376 + posdesc = "昌都,历史悠久,文化底蕴深厚。";
377 + break;
378 + case "山南":
379 + posdesc = "山南,藏文化的发源地之一。";
380 + break;
381 + case "那曲":
382 + posdesc = "那曲,草原风光,牧民生活的地方。";
383 + break;
384 + case "阿里":
385 + posdesc = "阿里,神秘的西部,拥有壮丽的自然景观。";
386 + break;
387 + default:
388 + posdesc = "西藏,神秘而纯净,等待你的探索。";
389 + break;
390 + }
391 + break;
392 + case "新疆维吾尔":
393 + posdesc = "辽阔新疆,民族风情与壮丽景观并存。";
394 + switch (ipLocation.data.city) {
395 + case "乌鲁木齐":
396 + posdesc = "乌鲁木齐,天山脚下的城市,文化多元。";
397 + break;
398 + case "喀什":
399 + posdesc = "喀什,古丝绸之路的重要节点,历史悠久。";
400 + break;
401 + case "克拉玛依":
402 + posdesc = "克拉玛依,石油之城,经济发展迅速。";
403 + break;
404 + case "吐鲁番":
405 + posdesc = "吐鲁番,火焰山的故乡,葡萄之乡。";
406 + break;
407 + case "哈密":
408 + posdesc = "哈密,哈密瓜的发源地,风景如画。";
409 + break;
410 + case "博乐":
411 + posdesc = "博乐,草原风光,民族文化交融。";
412 + break;
413 + case "阿克苏":
414 + posdesc = "阿克苏,苹果之乡,风景秀丽。";
415 + break;
416 + case "和田":
417 + posdesc = "和田,玉石之乡,历史文化深厚。";
418 + break;
419 + default:
420 + posdesc = "新疆的城市各具特色,等待你的探索。";
421 + break;
422 + }
423 + break;
424 + case "内蒙古":
425 + switch (ipLocation.data.city) {
426 + case "呼和浩特":
427 + posdesc = "呼和浩特,内蒙古的首府,历史悠久。";
428 + break;
429 + case "包头":
430 + posdesc = "包头,钢铁之城,经济发展迅速。";
431 + break;
432 + case "乌兰察布":
433 + posdesc = "乌兰察布,草原文化与现代城市的结合。";
434 + break;
435 + case "赤峰":
436 + posdesc = "赤峰,拥有丰富的自然资源与人文景观。";
437 + break;
438 + case "通辽":
439 + posdesc = "通辽,草原文化的发源地,风情独特。";
440 + break;
441 + case "鄂尔多斯":
442 + posdesc = "鄂尔多斯,现代化城市与草原文化的交融。";
443 + break;
444 + case "巴彦淖尔":
445 + posdesc = "巴彦淖尔,黄河之畔,风景如画。";
446 + break;
447 + case "锡林郭勒":
448 + posdesc = "锡林郭勒,草原辽阔,马背上的民族风情。";
449 + break;
450 + default:
451 + posdesc = "草原辽阔的内蒙古,等你来策马奔腾。";
452 + break;
453 + }
454 + break;
455 + case "宁夏回族":
456 + posdesc = "宁夏,塞上江南,黄河流经的美丽地方。";
457 + break;
458 + case "海南":
459 + posdesc = "阳光、沙滩、椰风海韵,欢迎来海南度假。";
460 + break;
461 + case "陕西":
462 + switch (ipLocation.data.city) {
463 + case "西安":
464 + posdesc = "西安,古都文化与兵马俑的故乡。";
465 + break;
466 + case "咸阳":
467 + posdesc = "咸阳,历史悠久,文化底蕴深厚。";
468 + break;
469 + default:
470 + posdesc = "陕西,历史与文化的交汇之地。";
471 + break;
472 + }
473 + break;
474 + case "甘肃":
475 + switch (ipLocation.data.city) {
476 + case "兰州":
477 + posdesc = "兰州,黄河之滨,牛肉面闻名。";
478 + break;
479 + case "天水":
480 + posdesc = "天水,历史悠久,文化底蕴深厚。";
481 + break;
482 + default:
483 + posdesc = "甘肃,丝绸之路的重要节点。";
484 + break;
485 + }
486 + break;
487 + case "青海":
488 + switch (ipLocation.data.city) {
489 + case "西宁":
490 + posdesc = "西宁,青海湖的门户,风景如画。";
491 + break;
492 + default:
493 + posdesc = "青海,湖泊与草原的美丽结合。";
494 + break;
495 + }
496 + break;
497 + case "吉林":
498 + switch (ipLocation.data.city) {
499 + case "长春":
500 + posdesc = "长春,汽车城,文化底蕴深厚。";
501 + break;
502 + case "吉林市":
503 + posdesc = "吉林市,松花江畔,风景如画。";
504 + break;
505 + default:
506 + posdesc = "吉林,冰雪与文化的交融之地。";
507 + break;
508 + }
509 + break;
510 + case "黑龙江":
511 + switch (ipLocation.data.city) {
512 + case "哈尔滨":
513 + posdesc = "哈尔滨,冰雪之城,俄罗斯风情浓厚。";
514 + break;
515 + case "齐齐哈尔":
516 + posdesc = "齐齐哈尔,黑龙江的明珠,文化底蕴深厚。";
517 + break;
518 + default:
519 + posdesc = "黑龙江,冰雪与文化的交汇之地。";
520 + break;
521 + }
522 + break;
523 + default:
524 + posdesc = "带我去你的城逛逛吧!";
525 + break;
526 + }
527 + break;
528 + default:
529 + posdesc = "带我去你的国家逛逛吧";
530 + break;
531 + }
532 +
533 + // 根据本地时间切换欢迎语
534 + let timeChange;
535 + let date = new Date();
536 + if (date.getHours() >= 5 && date.getHours() < 11) timeChange = "<span>🌤️ 早上好,一日之计在于晨</span>";
537 + else if (date.getHours() >= 11 && date.getHours() < 13) timeChange = "<span>☀️ 中午好,记得午休喔~</span>";
538 + else if (date.getHours() >= 13 && date.getHours() < 17) timeChange = "<span>🕞 下午好,饮茶先啦!</span>";
539 + else if (date.getHours() >= 17 && date.getHours() < 19) timeChange = "<span>🚶‍♂️ 即将下班,记得按时吃饭~</span>";
540 + else if (date.getHours() >= 19 && date.getHours() < 24) timeChange = "<span>🌙 晚上好,夜生活嗨起来!</span>";
541 + else timeChange = "夜深了,早点休息,少熬夜";
542 +
543 + let welcomeInfoElement = document.getElementById("welcome-info");
544 +
545 + if (welcomeInfoElement) {
546 +
547 + welcomeInfoElement.style.padding = "15px";
548 + welcomeInfoElement.style.borderRadius = "8px";
549 + welcomeInfoElement.style.boxShadow = "0 2px 4px rgba(0,0,0,0.1)"; // 可选:添加轻微阴影增强立体感
550 + welcomeInfoElement.style.margin = "10px 0"; // 可选:添加上下外边距
551 + welcomeInfoElement.style.lineHeight = "1.6"; // 可选:优化行间距
552 +
553 + welcomeInfoElement.innerHTML =
554 + `欢迎来自 <b><span style="color: var(--efu-main)">${pos}</span></b> 的小友💖<br>当前位置距博主约 <b><span style="color: var(--efu-main)">${dist.toFixed(2)}</span></b> 公里!<br>${timeChange}<br>Tip:<b><span style="font-size: 15px;">${posdesc}</span></b>`;
555 + } else {
556 + console.log("Pjax无法获取元素");
557 + }
558 + }
559 +
560 + // Pjax完成页面切换的事件回调处理
561 + function handlePjaxComplete() {
562 + if (isHomePage()) {
563 + showWelcome();
564 + }
565 + }
566 +
567 + function isHomePage() {
568 + return window.location.pathname === '/' || window.location.pathname === '/index.html';
569 + }
570 +
571 +
572 + // 添加pjax:complete事件监听
573 + window.onload = function () {
574 + if (isHomePage()) {
575 + showWelcome();
576 + }
577 + document.addEventListener("pjax:complete", handlePjaxComplete);
578 + };
Новее Позже