js
· 26 KiB · JavaScript
Raw
// 进行 fetch 请求
fetch('https://api.nsmao.net/api/ip/query?key=你的API密钥,从https://api.nsmao.net申请')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
ipLocation = data;
if (isHomePage()) {
showWelcome();
}
})
.catch(error => console.error('Error:', error));
function getDistance(e1, n1, e2, n2) {
const R = 6371;
const { sin, cos, asin, PI, hypot } = Math;
let getPoint = (e, n) => {
e *= PI / 180;
n *= PI / 180;
return { x: cos(n) * cos(e), y: cos(n) * sin(e), z: sin(n) };
};
let a = getPoint(e1, n1);
let b = getPoint(e2, n2);
let c = hypot(a.x - b.x, a.y - b.y, a.z - b.z);
let r = asin(c / 2) * 2 * R;
return Math.round(r);
}
function showWelcome() {
if (!ipLocation || !ipLocation.data) {
console.error('ipLocation data is not available.');
return;
}
let dist = getDistance(120.3074357, 31.4933074, ipLocation.data.lng, ipLocation.data.lat);
let pos = ipLocation.data.country;
let ip = ipLocation.ip;
let posdesc;
// 新增ipv6显示为指定内容
if (ip.includes(":")) {
ip = "<br>好复杂,咱看不懂~(ipv6)";
}
// 以下的代码需要根据新API返回的结果进行相应的调整
switch (ipLocation.data.country) {
case "日本":
posdesc = "よろしく,一起去看樱花吗";
break;
case "美国":
posdesc = "Let us live in peace!";
break;
case "英国":
posdesc = "想同你一起夜乘伦敦眼";
break;
case "俄罗斯":
posdesc = "干了这瓶伏特加!";
break;
case "法国":
posdesc = "C'est La Vie";
break;
case "德国":
posdesc = "Die Zeit verging im Fluge.";
break;
case "澳大利亚":
posdesc = "一起去大堡礁吧!";
break;
case "加拿大":
posdesc = "拾起一片枫叶赠予你";
break;
case "中国":
pos = ipLocation.data.prov + " " + ipLocation.data.city + " " + ipLocation.data.district;
switch (ipLocation.data.prov) {
case "北京":
posdesc = "北——京——欢迎你~~~";
break;
case "上海":
posdesc = "走在外滩,感受历史与现代的交融。";
break;
case "广东":
switch (ipLocation.data.city) {
case "广州":
posdesc = "看小蛮腰,喝早茶了嘛~";
break;
case "深圳":
posdesc = "今天你逛商场了嘛~";
break;
case "珠海":
posdesc = "浪漫之城珠海,海风轻拂。";
break;
case "东莞":
posdesc = "东莞,制造业之都,经济活跃。";
break;
case "佛山":
posdesc = "佛山,武术之乡,陶瓷文化深厚。";
break;
default:
posdesc = "带你感受广东的热情与美食!";
break;
}
break;
case "浙江":
switch (ipLocation.data.city) {
case "杭州":
posdesc = "西湖美景,三月天~";
break;
case "宁波":
posdesc = "来宁波,感受大海的气息。";
break;
case "温州":
posdesc = "温州人杰地灵,商贸繁荣。";
break;
case "绍兴":
posdesc = "绍兴,酒乡文化,古韵悠长。";
break;
case "湖州":
posdesc = "湖州,太湖之滨,风景如画。";
break;
default:
posdesc = "这里是浙江,充满江南的韵味!";
break;
}
break;
case "四川":
switch (ipLocation.data.city) {
case "成都":
posdesc = "宽窄巷子,成都慢生活。";
break;
case "绵阳":
posdesc = "享受科技城的宁静与创新。";
break;
case "自贡":
posdesc = "自贡的盐文化与灯会,独具魅力。";
break;
case "德阳":
posdesc = "德阳,历史悠久,文化底蕴深厚。";
break;
case "乐山":
posdesc = "乐山大佛,世界文化遗产。";
break;
default:
posdesc = "来四川,品麻辣火锅,赏壮丽山河。";
break;
}
break;
case "福建":
switch (ipLocation.data.city) {
case "厦门":
posdesc = "鼓浪屿听海,厦门美食让人流连忘返。";
break;
case "福州":
posdesc = "有福之州,来此感受千年古城。";
break;
case "泉州":
posdesc = "泉州,海上丝绸之路的起点。";
break;
case "漳州":
posdesc = "漳州,古城文化与美食的结合。";
break;
case "南平":
posdesc = "南平,武夷山的自然风光。";
break;
default:
posdesc = "福建山水如画,美景无处不在。";
break;
}
break;
case "山东":
switch (ipLocation.data.city) {
case "青岛":
posdesc = "来青岛喝啤酒,看大海吧!";
break;
case "济南":
posdesc = "泉城济南,四面荷花三面柳。";
break;
case "烟台":
posdesc = "烟台的葡萄酒与海鲜,令人陶醉。";
break;
case "潍坊":
posdesc = "潍坊,风筝之都,文化底蕴深厚。";
break;
case "德州":
posdesc = "德州,扒鸡闻名,文化悠久。";
break;
default:
posdesc = "山东好客,欢迎来感受齐鲁文化!";
break;
}
break;
case "江苏":
switch (ipLocation.data.city) {
case "南京":
posdesc = "六朝古都南京,历史与现代的碰撞。";
break;
case "苏州":
posdesc = "来苏州,感受园林之美。";
break;
case "无锡":
posdesc = "无锡太湖美景,灵山大佛令人心旷神怡。";
break;
case "常州":
posdesc = "常州,文化与科技的交汇点。";
break;
case "南通":
posdesc = "南通,海门潮涌,文化底蕴深厚。";
break;
default:
posdesc = "水乡泽国,江南佳丽地。";
break;
}
break;
case "河北":
posdesc = "燕赵大地,英雄辈出的河北,等你探索!";
break;
case "河南":
switch (ipLocation.data.city) {
case "郑州":
posdesc = "中原大地,郑州是交通枢纽与历史重镇。";
break;
case "洛阳":
posdesc = "千年古都洛阳,牡丹花开的城。";
break;
case "开封":
posdesc = "开封,古都文化与美食的汇聚地。";
break;
case "新乡":
posdesc = "新乡,历史悠久,文化底蕴深厚。";
break;
case "焦作":
posdesc = "焦作,云台山的自然风光。";
break;
default:
posdesc = "这里是河南,历史悠久文化灿烂。";
break;
}
break;
case "湖南":
switch (ipLocation.data.city) {
case "长沙":
posdesc = "热辣长沙,吃小龙虾逛黄兴路步行街。";
break;
case "岳阳":
posdesc = "岳阳楼,洞庭湖的美景尽收眼底。";
break;
case "株洲":
posdesc = "株洲,火车制造业的发源地。";
break;
case "湘潭":
posdesc = "湘潭,伟人故里,文化底蕴深厚。";
break;
default:
posdesc = "湖南,烟雨迷蒙的湘江流过这片土地。";
break;
}
break;
case "湖北":
switch (ipLocation.data.city) {
case "武汉":
posdesc = "来大武汉,过长江大桥,吃热干面!";
break;
case "宜昌":
posdesc = "三峡大坝,壮丽的自然奇观。";
break;
case "荆州":
posdesc = "荆州,历史文化名城,古韵悠长。";
break;
case "襄阳":
posdesc = "襄阳,古城文化与美食的结合。";
break;
default:
posdesc = "湖北,长江中游的明珠,风景秀丽。";
break;
}
break;
case "安徽":
switch (ipLocation.data.city) {
case "合肥":
posdesc = "创新之城合肥,科教文化汇聚地。";
break;
case "黄山":
posdesc = "黄山,天下第一奇山,风景如画。";
break;
case "芜湖":
posdesc = "芜湖,长江之畔,文化底蕴深厚。";
break;
case "马鞍山":
posdesc = "马鞍山,文化与自然的完美结合。";
break;
default:
posdesc = "安徽山水,黄山、九华山欢迎你。";
break;
}
break;
case "广西":
switch (ipLocation.data.city) {
case "桂林":
posdesc = "桂林山水甲天下,风景如画。";
break;
case "南宁":
posdesc = "绿城南宁,宜居宜游。";
break;
case "柳州":
posdesc = "柳州的螺蛳粉,独具风味。";
break;
case "防城港":
posdesc = "防城港,海洋资源丰富,风景迷人。";
break;
default:
posdesc = "广西山清水秀,民俗风情浓郁。";
break;
}
break;
case "贵州":
switch (ipLocation.data.city) {
case "贵阳":
posdesc = "贵阳,山城之美,民族风情浓郁。";
break;
case "遵义":
posdesc = "遵义,红色之城,历史悠久。";
break;
case "安顺":
posdesc = "安顺,黄果树瀑布的故乡,风景如画。";
break;
case "毕节":
posdesc = "毕节,拥有丰富的自然资源与人文景观。";
break;
case "六盘水":
posdesc = "六盘水,凉爽的夏天,避暑胜地。";
break;
case "铜仁":
posdesc = "铜仁,秀美的山水与独特的民族文化。";
break;
case "凯里":
posdesc = "凯里,苗族文化的发源地,风情独特。";
break;
default:
posdesc = "来贵州,品茅台,赏黄果树瀑布。";
break;
}
break;
case "云南":
switch (ipLocation.data.city) {
case "昆明":
posdesc = "春城昆明,四季如春,风景秀丽。";
break;
case "大理":
posdesc = "苍山洱海,大理古城,你来了就不想走。";
break;
case "丽江":
posdesc = "丽江古城,纳西文化的瑰宝。";
break;
case "西双版纳":
posdesc = "西双版纳,热带雨林的奇妙之地。";
break;
default:
posdesc = "云南风景独特,风情万种。";
break;
}
break;
case "西藏":
switch (ipLocation.data.city) {
case "拉萨":
posdesc = "拉萨,西藏的首府,布达拉宫的故乡。";
break;
case "日喀则":
posdesc = "日喀则,历史悠久的文化名城。";
break;
case "林芝":
posdesc = "林芝,素有'西藏江南'之称,风景如画。";
break;
case "昌都":
posdesc = "昌都,历史悠久,文化底蕴深厚。";
break;
case "山南":
posdesc = "山南,藏文化的发源地之一。";
break;
case "那曲":
posdesc = "那曲,草原风光,牧民生活的地方。";
break;
case "阿里":
posdesc = "阿里,神秘的西部,拥有壮丽的自然景观。";
break;
default:
posdesc = "西藏,神秘而纯净,等待你的探索。";
break;
}
break;
case "新疆维吾尔":
posdesc = "辽阔新疆,民族风情与壮丽景观并存。";
switch (ipLocation.data.city) {
case "乌鲁木齐":
posdesc = "乌鲁木齐,天山脚下的城市,文化多元。";
break;
case "喀什":
posdesc = "喀什,古丝绸之路的重要节点,历史悠久。";
break;
case "克拉玛依":
posdesc = "克拉玛依,石油之城,经济发展迅速。";
break;
case "吐鲁番":
posdesc = "吐鲁番,火焰山的故乡,葡萄之乡。";
break;
case "哈密":
posdesc = "哈密,哈密瓜的发源地,风景如画。";
break;
case "博乐":
posdesc = "博乐,草原风光,民族文化交融。";
break;
case "阿克苏":
posdesc = "阿克苏,苹果之乡,风景秀丽。";
break;
case "和田":
posdesc = "和田,玉石之乡,历史文化深厚。";
break;
default:
posdesc = "新疆的城市各具特色,等待你的探索。";
break;
}
break;
case "内蒙古":
switch (ipLocation.data.city) {
case "呼和浩特":
posdesc = "呼和浩特,内蒙古的首府,历史悠久。";
break;
case "包头":
posdesc = "包头,钢铁之城,经济发展迅速。";
break;
case "乌兰察布":
posdesc = "乌兰察布,草原文化与现代城市的结合。";
break;
case "赤峰":
posdesc = "赤峰,拥有丰富的自然资源与人文景观。";
break;
case "通辽":
posdesc = "通辽,草原文化的发源地,风情独特。";
break;
case "鄂尔多斯":
posdesc = "鄂尔多斯,现代化城市与草原文化的交融。";
break;
case "巴彦淖尔":
posdesc = "巴彦淖尔,黄河之畔,风景如画。";
break;
case "锡林郭勒":
posdesc = "锡林郭勒,草原辽阔,马背上的民族风情。";
break;
default:
posdesc = "草原辽阔的内蒙古,等你来策马奔腾。";
break;
}
break;
case "宁夏回族":
posdesc = "宁夏,塞上江南,黄河流经的美丽地方。";
break;
case "海南":
posdesc = "阳光、沙滩、椰风海韵,欢迎来海南度假。";
break;
case "陕西":
switch (ipLocation.data.city) {
case "西安":
posdesc = "西安,古都文化与兵马俑的故乡。";
break;
case "咸阳":
posdesc = "咸阳,历史悠久,文化底蕴深厚。";
break;
default:
posdesc = "陕西,历史与文化的交汇之地。";
break;
}
break;
case "甘肃":
switch (ipLocation.data.city) {
case "兰州":
posdesc = "兰州,黄河之滨,牛肉面闻名。";
break;
case "天水":
posdesc = "天水,历史悠久,文化底蕴深厚。";
break;
default:
posdesc = "甘肃,丝绸之路的重要节点。";
break;
}
break;
case "青海":
switch (ipLocation.data.city) {
case "西宁":
posdesc = "西宁,青海湖的门户,风景如画。";
break;
default:
posdesc = "青海,湖泊与草原的美丽结合。";
break;
}
break;
case "吉林":
switch (ipLocation.data.city) {
case "长春":
posdesc = "长春,汽车城,文化底蕴深厚。";
break;
case "吉林市":
posdesc = "吉林市,松花江畔,风景如画。";
break;
default:
posdesc = "吉林,冰雪与文化的交融之地。";
break;
}
break;
case "黑龙江":
switch (ipLocation.data.city) {
case "哈尔滨":
posdesc = "哈尔滨,冰雪之城,俄罗斯风情浓厚。";
break;
case "齐齐哈尔":
posdesc = "齐齐哈尔,黑龙江的明珠,文化底蕴深厚。";
break;
default:
posdesc = "黑龙江,冰雪与文化的交汇之地。";
break;
}
break;
default:
posdesc = "带我去你的城逛逛吧!";
break;
}
break;
default:
posdesc = "带我去你的国家逛逛吧";
break;
}
// 根据本地时间切换欢迎语
let timeChange;
let date = new Date();
if (date.getHours() >= 5 && date.getHours() < 11) timeChange = "<span>🌤️ 早上好,一日之计在于晨</span>";
else if (date.getHours() >= 11 && date.getHours() < 13) timeChange = "<span>☀️ 中午好,记得午休喔~</span>";
else if (date.getHours() >= 13 && date.getHours() < 17) timeChange = "<span>🕞 下午好,饮茶先啦!</span>";
else if (date.getHours() >= 17 && date.getHours() < 19) timeChange = "<span>🚶♂️ 即将下班,记得按时吃饭~</span>";
else if (date.getHours() >= 19 && date.getHours() < 24) timeChange = "<span>🌙 晚上好,夜生活嗨起来!</span>";
else timeChange = "夜深了,早点休息,少熬夜";
let welcomeInfoElement = document.getElementById("welcome-info");
if (welcomeInfoElement) {
welcomeInfoElement.style.padding = "15px";
welcomeInfoElement.style.borderRadius = "8px";
welcomeInfoElement.style.boxShadow = "0 2px 4px rgba(0,0,0,0.1)"; // 可选:添加轻微阴影增强立体感
welcomeInfoElement.style.margin = "10px 0"; // 可选:添加上下外边距
welcomeInfoElement.style.lineHeight = "1.6"; // 可选:优化行间距
welcomeInfoElement.innerHTML =
`欢迎来自 <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>`;
} else {
console.log("Pjax无法获取元素");
}
}
// Pjax完成页面切换的事件回调处理
function handlePjaxComplete() {
if (isHomePage()) {
showWelcome();
}
}
function isHomePage() {
return window.location.pathname === '/' || window.location.pathname === '/index.html';
}
// 添加pjax:complete事件监听
window.onload = function () {
if (isHomePage()) {
showWelcome();
}
document.addEventListener("pjax:complete", handlePjaxComplete);
};
| 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 | }; |
| 579 |