This commit is contained in:
Zylan
2025-03-27 18:10:24 +08:00
parent f04973a13b
commit db00afbb1e
3 changed files with 114 additions and 5 deletions

View File

@@ -6,12 +6,16 @@ class UIManager {
this.closeSettings = document.getElementById('closeSettings');
this.themeToggle = document.getElementById('themeToggle');
this.toastContainer = document.getElementById('toastContainer');
this.visitorCountElement = document.getElementById('visitorCount');
// Check for preferred color scheme
this.checkPreferredColorScheme();
// Initialize event listeners
this.setupEventListeners();
// Initialize visitor counter
this.initVisitorCounter();
}
checkPreferredColorScheme() {
@@ -92,6 +96,83 @@ class UIManager {
}
});
}
initVisitorCounter() {
try {
// 获取本地存储的计数
let localCount = parseInt(localStorage.getItem('visitorCount') || '0');
// 检查是否是今天第一次访问
const lastVisitDate = localStorage.getItem('lastVisitDate');
const today = new Date().toDateString();
if (lastVisitDate !== today) {
// 今天第一次访问,增加计数
localCount++;
localStorage.setItem('visitorCount', localCount.toString());
localStorage.setItem('lastVisitDate', today);
// 尝试向CountAPI发送计数增加请求
this.incrementCountAPI();
}
// 显示计数
this.updateVisitorCountDisplay(localCount);
// 从CountAPI获取全局计数
this.fetchGlobalCount();
} catch (error) {
console.error('访问计数器初始化失败:', error);
this.visitorCountElement.textContent = '0';
}
}
incrementCountAPI() {
// 使用免费的CountAPI服务来增加计数
// 注意这个免费API有使用限制生产环境可能需要更可靠的服务
fetch('https://api.countapi.xyz/hit/snap-solver-app/visits')
.catch(error => console.error('无法更新全局计数:', error));
}
fetchGlobalCount() {
// 获取全局计数
fetch('https://api.countapi.xyz/get/snap-solver-app/visits')
.then(response => response.json())
.then(data => {
// 将全局计数与本地计数取较大值显示
const localCount = parseInt(localStorage.getItem('visitorCount') || '0');
const globalCount = data.value || 0;
const displayCount = Math.max(localCount, globalCount);
this.updateVisitorCountDisplay(displayCount);
// 如果全局计数更大,则更新本地存储
if (globalCount > localCount) {
localStorage.setItem('visitorCount', globalCount.toString());
}
})
.catch(error => {
console.error('无法获取全局计数:', error);
// 如果全局计数获取失败,至少显示本地计数
const localCount = parseInt(localStorage.getItem('visitorCount') || '0');
this.updateVisitorCountDisplay(localCount);
});
}
updateVisitorCountDisplay(count) {
if (this.visitorCountElement) {
// 低调显示超过1000显示为1k+超过10000显示为10k+等
if (count >= 10000) {
const kCount = Math.floor(count / 1000);
this.visitorCountElement.textContent = `${kCount}k+`;
} else if (count >= 1000) {
const kCount = Math.floor(count / 100) / 10;
this.visitorCountElement.textContent = `${kCount}k+`;
} else {
this.visitorCountElement.textContent = count.toString();
}
}
}
}
// Export for use in other modules

View File

@@ -1417,6 +1417,9 @@ button:disabled {
.footer-text {
color: var(--text-secondary);
font-size: 0.9rem;
display: flex;
align-items: center;
gap: 1rem;
}
.footer-links {
@@ -1450,6 +1453,32 @@ button:disabled {
.user-counter {
display: flex;
align-items: center;
gap: 0.25rem;
opacity: 0.7;
font-size: 0.75rem;
color: var(--text-tertiary);
}
.counter-badge {
display: flex;
align-items: center;
background: transparent;
border-radius: 4px;
overflow: hidden;
font-size: 0.75rem;
color: var(--text-tertiary);
}
.counter-title {
display: none;
}
.counter-number {
background-color: transparent;
color: var(--text-tertiary);
padding: 2px 4px;
font-size: 0.75rem;
font-weight: normal;
}
.user-counter img {

View File

@@ -262,6 +262,10 @@
<div class="footer-content">
<div class="footer-text">
<span>© 2024 Snap-Solver</span>
<div class="user-counter">
<span>访问</span>
<div id="visitorCount" class="counter-number">--</div>
</div>
</div>
<div class="footer-links">
<a href="https://github.com/Zippland/Snap-Solver/" target="_blank" class="footer-link">
@@ -272,11 +276,6 @@
<i class="fas fa-book"></i>
<span>小红书</span>
</a>
<div class="user-counter">
<a href="https://hits.seeyoufarm.com" target="_blank">
<img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FZippland%2FSnap-Solver&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=用户量&edge_flat=false"/>
</a>
</div>
</div>
</div>
</footer>